任务&例外问题

时间:2014-03-20 15:13:07

标签: c# task-parallel-library

我是新手,我希望你可以帮我解决这个问题。

这是代码:

Task tast = null;
try
{
   tast = new Task(() =>
   {
     ...
   });
   tast.Start();
   if (tast != null)
   {
      tast.Wait();
      if (tast.Exception != null)
      {
         // catch exception here
      }
   }
}
catch (Exception err)
{
  // not here? 
}

异常是在catch语句中捕获但不在task.Exception!= null。

为什么会这样?任务应该在自己的主题上。

我宁愿让任务知道异常,然后询问是否异常!= null。

我该如何做到这一点?

我很抱歉,如果这是重复的话。请在评论中告诉我,我将删除此问题。

1 个答案:

答案 0 :(得分:3)

您正在调用Task.Wait() - 如果任务出现故障,则会抛出异常。如果你没有打电话给Task.Wait(),你就不会在你的帖子中得到例外......当然,你也不会在它结束时发现。您可以通过各种方式等待等待它完成(例如附加延续任务并等待 完成),但最简单的方法就是调用{带有catch块的{1}}:

Task.Wait()