Mat*_*son 5 .net c# asynchronous task wait
我想异步运行某些对象的初始化,但是某些对象依赖于其他对象的初始化.然后在我的应用程序的其余部分继续之前,需要初始化所有对象.
是否可以在一个任务上调用Wait(),然后再次调用Wait(),或者在我的示例中包含WaitAll()的集合中包含它?
Dictionary<String, Task> taskdict = new Dictionary<String, Task>( );
taskdict.Add( "Task1",
Task.Factory.StartNew( ( ) => {
//Do stuff
} ) );
taskdict.Add( "Task2",
Task.Factory.StartNew( ( ) => {
taskdict[ "Task1" ].Wait( );
//Do stuff
} ) );
try {
Task.WaitAll( taskdict.Values.Convert<Task[ ]>( ) );
}
Run Code Online (Sandbox Code Playgroud)
或者第二个Wait()/ WaitAll()会失败吗?
Ser*_*rvy 21
你当然可以等待两次任务.您可以根据需要等待任务多次,没有任何负面影响.现在,如果你已经在同一个线程等待一个任务,将已经完成,因此未来Wait的呼叫都将只是立即返回,因为其中没有等待,但他们肯定不会失败或以其他方式产生不适当的结果.
请注意,如果任务未正常完成而被取消或由于抛出异常而无法完成,则调用Wait将重新抛出异常(每次调用时Wait).如果Wait为您抛出异常,那么这就是原因.
| 归档时间: |
|
| 查看次数: |
2986 次 |
| 最近记录: |