【发布时间】:2017-02-05 20:17:02
【问题描述】:
我正在尝试理解一段不是我自己编写的代码。这是一种用于发送电子邮件的异步方法,最多应尝试 5 次以发送给定的邮件消息。
public Task<bool> SendMail(MailMessage mailMessage)
{
bool success = false;
int i = 0;
int smtpRetryCount = 5;
SmtpClient smtpClient = new SmtpClient("myprovider.de");
smtpClient.Port = 123;
smtpClient.EnableSsl = true;
int smtpRetryWaitTime = 2000;
while (i < smtpRetryCount + 1)
{
try
{
smtpClient.Send(mailMessage);
success = true;
Console.WriteLine("SUCCESS");
break;
}
catch (Exception exc)
{
Console.WriteLine("Exception");
Thread.Sleep(smtpRetryWaitTime);
success = false;
}
i++;
}
// This is the part that I don't get, does it make any sense?
TaskCompletionSource<bool> tsc = new TaskCompletionSource<bool>();
tsc.SetResult(success);
return tsc.Task;
}
我想知道这是否真的是异步的,如果是,它以何种方式实现异步属性。对我来说这没有多大意义,尤其是最后 4 行。
【问题讨论】:
-
整个方法没有意义,因为它是同步的。
标签: c# asp.net .net asynchronous async-await