我正在开发一个 MVC C# 网站 .NET 4.0,并且在一个控制器中我需要发送大量邮件。我从一个使用 SendAsynch 传递回调的独立程序中复制了自己的代码。在 stanalone 应用程序中一切正常。
当然,在控制器中相同的代码不起作用:回调永远不会被调用。
有人可以告诉我为什么相同的代码可以独立运行而不是在控制器中运行?
这是主要代码:
SmtpClient GenMailClient = new SmtpClient();
GenMailClient.SendCompleted += SendCompleted;
GenMailClient.SendAsync(message, ArgumentForTheCallBack);
WaitingMails++;
var startTime = DateTime.Now;
//waits until the SendCompleted is called (FOREVER!)
while (WaitingMails != 0)
Thread.Sleep(500);
GenMailClient.Dispose();
这是 SendCompleted 回调:
private void SendCompleted(object sender, AsyncCompletedEventArgs e)
{
WaitingMails--;
}