感谢大家的帮助。我在周末想出来了。
我从startBot改变了设计,让它返回一个Task,然后await就可以了。
让我们看看它为什么像现在一样工作:
的 的Thread.join 强> 文件
阻止调用线程,直到此实例表示的线程终止...
在继续使用sendMail()之前,它“等待”线程(t1,t2)终止。
的 Task.WhenAll 强> 文件
创建将在所有提供的任务完成后完成的任务。
这个不等。它正在创建另一个继续正常的任务。
的 Task.WhenAll.Wait 强> 文件
等待任务完成执行。
这一个采取上面的任务创建并等待其终止。 ( Task.WaitAll 会得到相同的)
的 你可以做什么: 强>
如果要阻止当前线程直到完成:
Task.WaitAll(tl.ToArray());
如果你 的 别 强> 想要阻止当前线程:
Task.WhenAll(tl).ContinueWith(t => sendMail());
继续 创建异步执行的延续 当目标任务完成时。