![](/img/trans.png)
[英]Keep UI responsive using Tasks, Handle AggregateException
[英]Confusion over AggregateException Handle method
ReSharper給了我一個CoVariantConversion警告,所以我決定谷歌這個,看看如何解決它。 我遇到了這段代碼:
// ReSharper disable CoVariantArrayConversion
try
{
Task.WaitAll(taskList.ToArray());
}
catch (AggregateException ex)
{
ex.Handle(e => true);
}
// ReSharper restore CoVariantArrayConversion
這部分令我困惑:
ex.Handle(e => true);
它有什么作用? 我認為它什么都不做。
你是對的:可以刪除該行並具有相同的效果(導致所有異常被視為“已處理”),就好像該行在那里一樣。
它唯一有用的時候是lambda可能會因某些異常而返回false(在這種情況下它不會)。
這就是說,處理異常,沒有別的。
這是一個示例,說明如何使用Handle方法:
Task task = Task.Factory.StartNew(() =>
{
throw new UnauthorizedAccessException();
});
try
{
task.Wait();
}
catch (AggregateException ex)
{
ex.Handle(x =>
{
if (x is UnauthorizedAccessException)
{
// Handle this exception...
return true;
}
// Other exceptions will not be handled here.
return false;
});
}
該示例來自本文: 異步編程 - 異常處理
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.