スレッドバージョンでは処理されない例外が発生し、アプリケーションはクラッシュしますが、タスクバージョンでは発生しません。両方ともまったく同じメソッドを実行しています誰かがこの例外の動作の違いの理由を説明することはできますか?例外処理:スレッドv/sタスク
スレッドバージョン:
try
{
new Thread(new ThreadStart(DoWork)).Start(); // do work throws exception
}
catch (Exception e)
{
Console.WriteLine(e);
}
static void DoWork()
{
Console.WriteLine("in thread");
throw new Exception();
}
タスクのバージョン:
var errorTask = Task.Factory.StartNew<Func<string>>(() =>
{
Console.WriteLine("in task");
throw new Exception();
});
try
{
string result = errorTask.Result();
}
catch (Exception e)
{
Console.WriteLine(e);
}
タスク!=スレッドです。 – john
@johnええ、初心者にとっては動作がかなり似ていますので、xeは例外の処理方法が邪魔になることが考えられます。 –