【发布时间】:2018-10-17 19:25:57
【问题描述】:
我有一个发送电子邮件的电子邮件通知应用程序,我们在每 5 分钟运行一次的控制台应用程序中执行此操作。我们在任务中运行电子邮件部分,以便它可以继续处理另一组通知。
但是,我们运行一个通知,控制台关闭并且电子邮件永远不会发送。在 SMTP 方面,它说主机被强制关闭。如何在所有任务完成之前保持控制台应用程序处于活动状态,但仍然能够多线程。
读取操作失败。传输的字节数:0 远程 IP: 44.444.444.44,会话:124992,代码:10054,消息:现有连接被远程主机强行关闭
private Task SendFromServer(MailMessage mailMessage, bool reuse, bool useServerSmtp)
{
return Task.Factory.StartNew(() =>
{
var smtp = new SmtpClient();
smtp.Send(mailMessage);
}
catch (Exception ex)
{
Logger.Error(ex.InnerException ?? ex);
}
finally
{
if(!reuse)
mailMessage.Dispose();
}
});
}
}
【问题讨论】:
-
也许这篇文章会有所帮助。我相信它是相似的。他们提到一种选择是编写自己的 TaskScheduler 实现来解决此类问题。 stackoverflow.com/questions/6156878/…
标签: c# .net multithreading task-parallel-library console-application