有人能解释一下,为什么我没有从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);
这将执行它并抛出/捕获异常。