0
我需要知道如何在發生異常時在pararell foreach循環中停止任務?如果Foo1()拋出異常DoSomeWork()應該被取消。如何在發生異常時在pararell foreach循環中停止任務?
Item類
class Item
{
public async Task DoSomeWork()
{
try
{
await Foo1();
await Foo2();
}
catch (Exception ex)
{
Console.Writeline(ex.Message);
}
}
private async Task Foo1()
{
try
{
//
// some functionality
//
}
catch(Exception ex)
{
// If exception occurs, then how cancel Task DoSomeWork()
}
}
private async Task Foo2()
{
try
{
//
// some functionality
//
}
catch(Exception ex)
{
// If exception occurs, then how cancel Task DoSomeWork()
}
}
}
與Pararell.Foreach環路ItemCollection類
class ItemCollection
{
public void StartAsync()
{
try
{
IList<Task> il = new List<Task>();
Parallel.ForEach(ListOfItems, t => il.Add(t.DoSomeWork()));
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
如何使用這個例子中的CancellationToken財產?
只是不要捕捉異常,或者如果你想記錄日誌的目的,然後再拋出 –
你是否想要取消循環的所有其他迭代? – svick
@svick不,只有拋出異常的任務。 –