【发布时间】:2019-05-28 12:17:09
【问题描述】:
我知道这方面有一百万个问题,我正在尝试他们的解决方案,但它的表现似乎与我预期的不同。
使用以下代码:
await Task.Run(() => { Thread.Sleep(5000); Console.WriteLine("I'm running after Thread.Sleep"); });
Console.WriteLine("I'm running after Task.Run");
我得到了输出:
[ 5 seconds elapses ]
I'm running after Thread.Sleep
I'm running after Task.Run
如果不使用Task.Run,我会得到相同的输出
我想要的是输出:
I'm running after Task.Run
[ 5 seconds elapses ]
I'm running after Thread.Sleep
“父”线程继续执行,长时间运行的任务在“后台”以不影响“父”线程的方式执行。
【问题讨论】:
-
您需要从task.run中删除await关键字,因为您正在等待Task.Run的执行以便继续执行您的程序
标签: c# multithreading asynchronous