【发布时间】:2011-05-12 04:26:27
【问题描述】:
我对异常处理和并行任务有疑问。
下面显示的代码启动 2 个任务并等待它们完成。我的问题是,如果任务抛出异常,则永远无法到达 catch 处理程序。
List<Task> tasks = new List<Task>();
try
{
tasks.Add(Task.Factory.StartNew(TaskMethod1));
tasks.Add(Task.Factory.StartNew(TaskMethod2));
var arr = tasks.ToArray();
Task.WaitAll(arr);
}
catch (AggregateException e)
{
// do something
}
但是,当我使用以下代码等待超时的任务时,会捕获到异常。
while(!Task.WaitAll(arr,100));
我似乎遗漏了一些东西,因为WaitAll 的文档描述了我第一次尝试成为正确的人。请帮助我理解为什么它不起作用。
【问题讨论】:
-
TaskMethod1 和 TaskMethod2 是做什么的?你在哪个线程上执行?如果你能把它变成一个简短但完整的例子(就像我的回答一样),那真的很有帮助。
标签: c# .net parallel-processing