方案一:
定義一箇中間變量,異常時賦值,下次再執行時根據中間變量的值判斷是否終止當前線程
方案二:
Task.Run有一個重載方法,利用第二個參數可以終止當前線程
CancellationTokenSource cts = new CancellationTokenSource();
for (int i = 0; i < 50; i++)
{
var value = i;
Task.Run(() => {
try
{
Console.WriteLine($"開始任務,id:{Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(1000);
if (value % 5==0)
{
Console.WriteLine($"this is an exception value={value}");
cts.Cancel();
}
Console.WriteLine($"結束任務,id:{Thread.CurrentThread.ManagedThreadId}");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}, cts.Token);
}