【发布时间】:2015-03-26 04:05:19
【问题描述】:
如果我编写的方法只是包装异步方法,例如:
public async Task WrapMethodAsync()
{
using(var smtpClient = new SmtpClient())
{
await smtpClient.SendMailAysnc(new MailMessage());
}
}
是不是和下面的一样:
public Task WrapMethodAsync()
{
using(var smtpClient = new SmtpClient())
{
return smtpClient.SendMailAysnc(new MailMessage());
}
}
或者后者实际上不是异步运行的?
【问题讨论】:
-
我确定这是重复的。答案是“大部分”——不同之处在于如果
SmtpClient构造函数(或MailMessage构造函数,或SendMailAsync方法的开始)抛出异常,在第一种情况下,您将得到一个错误的任务;在第二种情况下,您将立即获得异常。 -
这可能是重复的,但对于我来说,我不知道要搜索什么。
-
明白。希望其他人能找到。
-
搜索“C# await 教程”。这是非常基本的,你必须能够自己回答这个问题。如果你不知道这个问题的答案,使用异步编程是相当危险的。
-
@JonSkeet 处理客户端的语义远比异常处理语义重要。
标签: c# .net asynchronous async-await task-parallel-library