Bru*_*ant 4 .net task-parallel-library
我正在使用TPL和async/await进行一些测试,并注意到我发现意外的事情:我正在安排使用lambdas和Task.Run运行的工作,例如:
Task.Run(()=>Console.WriteLine("Nice program"));
Run Code Online (Sandbox Code Playgroud)
然后我意识到,如果程序立即返回,则工作永远不会执行.这是任何.NET应用程序(WPF,Forms等)中的预期行为吗?有没有讨论这个的文件?
这意味着Task.Run实际上是一个禁止发生火灾的场景.
这意味着Task.Run实际上是一个禁止发生火灾的场景.
好吧,你不想忘记 - 你要等到它完成.所以使用Task
那个返回给你的.
要做到这一点,您需要跟踪以这种方式启动的所有未完成的任务,然后使用类似Task.WaitAll(tasks)
非后台线程的内容.您可能不需要记住任务本身 - 您只需要一个在每个任务完成时递减的计数器,然后您只需要等待它达到零.
在没有更多了解你的情况的情况下,很难提供更具体的建议,说实话......但是这样的事情肯定会奏效.
当然,您可以使用自己的便捷方法轻松封装它.
归档时间: |
|
查看次数: |
2203 次 |
最近记录: |