[英]Starting a new task inside a function can crash a program?
我有一个由多个GUI组件调用的函数,并且始终需要在其他Task中运行。 每次以这种方式进行操作之间有区别吗:
public int foo()
{
// do what you need to do
return 1;
}
...
var t = Task<int>.Factory.StartNew(() =>foo());
并在foo函数中启动任务?
public int foo()
{
var t = Task<int>.Factory.StartNew(() =>
{
// do what you need to do
return 1;
});
}
...
foo();
我在该程序中得到System.AggregateException
,并且我开始认为启动任务的第二种方法是错误的。
看看InnerException。 AggregateException
用于捆绑由Tasks / PLinq引起的异常。 更多信息在这里:
http://msdn.microsoft.com/en-us/library/system.aggregateexception.aspx
AggregateException用于将多个故障合并到单个可抛出的异常对象中。 它在任务并行库和并行LINQ(PLINQ)中得到广泛使用。 有关示例,请参见如何:处理任务引发的异常和如何:处理PLINQ查询中的异常。
还值得阅读如何:处理任务引发的异常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.