有人能解释一下,为什么我没有从blow代码中得到例外:

Action <Exception> myact = ( ) => {
    throw new Exception( "test" );
  };

  Task myactTask = Task.Factory.StartNew( ( ) => myact);
  try {
    myactTask.Wait( );
    Console.WriteLine( myactTask.Id.ToString( ) );
    Console.WriteLine( myactTask.IsCompleted.ToString( ) );
  }
  catch( AggregateException ex ) {
    throw ex;
  }

另一方面,如果将操作“myact”替换为方法“myact()”,则可以获得异常,并且可以使用try catch块处理它。
public static void myact( ) {
  throw new Exception( "test" );
}

最佳答案

Task myactTask = Task.Factory.StartNew( ( ) => myact);

这不会执行您的操作,而是返回对您的操作的引用的函数。
Task myactTask = Task.Factory.StartNew(myact);

这将执行它并抛出/捕获异常。

07-24 09:28