sri*_*bin 7 c# multithreading task-parallel-library
我正在尝试运行以下代码:
class Program
{
static void Main(string[] args)
{
var task = Task.Factory.StartNew(() =>
{
throw new ApplicationException("message");
});
try
{
task.ContinueWith(t => Console.WriteLine("End"));
}
catch (AggregateException aex)
{
Console.Write(aex.InnerException.Message);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我预计Exception
会被捕获在以下位置:
catch (AggregateException aex)
{
Console.Write(aex.InnerException.Message);
}
Run Code Online (Sandbox Code Playgroud)
但这不会发生.为什么会这样?
Jon*_*eet 10
你刚刚打印出来task
- 甚至还没有完成.
打印任务不会等待它完成,或尝试获取值.
如果您将代码更改为:
try
{
task.Wait();
}
Run Code Online (Sandbox Code Playgroud)
... 然后我希望它能抓住异常.
(我之前使用过Task<T>.Result
,但我注意到这是一个没有返回值的任务,所以它只是非泛型的Task
.)