繁体   English   中英

在函数中启动新任务会导致程序崩溃?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM