public class 定时任务 {
private readonly IMaillAppService _邮件AppService;
public 定时任务(): base()
{
_邮件AppService = 邮件AppService;
}
private void 开始任务()
{
//我想在这里用Task mailTask调用"发送所有邮件()"
//如果mailTask 没有执行完成或者正在执行,应该如何写?
if (mailTask.IsCompleted)
{
mailTask.Start();
}
}
}
public interface IMaillAppService
{
bool 发送所有邮件();
}
可以使用消息队列,比如rabbitmq
或者数据量不大的话,你也可以使用数据库来实现,先读取待发送的邮件,然后把待发送的邮件标记为发送中,
然后发送后将邮件消息设置为发送成功/失败
差点忘了sql也可以发送邮件!谢谢
你没有说太清楚,是异步调用还是 ?
同步 异步都可以
比如我这样写.在邮件还没发送完毕,再次执行开始任务(),会不会重复发送邮件.
private void 开始任务()
{
Task mail_Task = new Task(() =>
{
_邮件AppService.发送所有邮件();
});
mail_Task.Start();
}
@pchief:执行一次开始任务就会重新发送一次邮件
还是不用task了