第一、在方法内部的程序可以有一个以上的await。
第二、只要方法内部的程序包含await,方法的前方就必须有async修饰。
第三、await expression意指将await操作符套用在Task或者Task之前。
第四、await不可已出现在例外处理的Catch区块或者Finally区块中。
第五、当程序已经被执行至async方法的内部时,遇到await会暂停方法的执行,并且先执行await之后的异步方法,待await之后的异步方法执行完毕与返回Task或者Task之后,再解除之前的暂停执行,并且由之前暂停点继续执行。
第六、倘若在前一行程序中,将异步方法回传的Task或者Task先指定给予一个暂时的Task或者Task,然后在下一行的程序中,运用await expression将await操作符套用在前一行的暂时的Task或者Task,则必须使用Try区块才能捕捉Task或者Task的例外消息。
第七、在Task.WhenAll()中,仅能捕捉到一个例外,而且无法事先预测可以捕捉到哪一个例外。
第八、Task的属性IsCanceled设为True,或者属性IsFaulted设为True时,皆会抛出例外,IsCanceled设为True代表取消作业,IsFaulted设为True代表发错误。
参考数据:
[1]try-catch (C# Reference)
http://msdn.microsoft.com/en-us/library/0yd65esw.aspx
原文:大专栏 摘要:Async Method与Exception
原文地址:https://www.cnblogs.com/chinatrump/p/11458326.html
时间: 2024-08-30 11:38:57