c# - 为什么 OnCompleted 不在 Visual Studio 上运行,而是在 LINQPad 上运行?
问题描述
我试图了解异步是如何在内部实现的。据我了解 OnCompleted() 没有阻塞。这两行在 linqpad 上“正确”执行。
但是,在 Visual Studio 上,我看不到:“这将在之后完成”,即使使用Task.Delay(5000).Wait()
Task.Delay(5000)
.GetAwaiter()
.OnCompleted(() => Console.WriteLine("This will be done after"));
Console.WriteLine("This will be done first");
解决方案
在控制台应用程序中,您需要让控制台等待另一次读取,因此您必须Console.ReadLine()
在代码末尾使用以等待另一次读取,如下所示:
static void Main(string[] args)
{
Task.Delay(5000).GetAwaiter()
.OnCompleted(() => Console.WriteLine("This will be done after"));
Console.WriteLine("This will be done first");
Console.ReadLine();
}
推荐阅读
- php - 得到满足条件的更深的元素
- ios - ios 14 中的 .ply(多边形)格式文件问题
- javascript - 如何在 React 单元测试中插入真实的 File 对象以发挥作用
- javascript - 如何在 Chrome 上设置他人网站的断点?
- c# - CloudStorageAccount, making TableQuery request
- javascript - 无法通过迭代项目数据来形成结构并更新 currentTab 以外的值
- python - 如何在不指定角色确切名称的情况下赋予角色
- python - 提取字符串后的文本
- python - 使用三次方程的根的和检查总和是否与乘积相同
- javascript - nestjs firebase 身份验证