首页 新闻 会员 周边 捐助

C# 如何使用Task调用

0
悬赏园豆:20 [已解决问题] 解决于 2019-01-18 12:36

public class 定时任务 {
private readonly IMaillAppService _邮件AppService;

    public 定时任务(): base()
    {
        _邮件AppService = 邮件AppService;
    }

    private void 开始任务()
    {
          //我想在这里用Task mailTask调用"发送所有邮件()"
          //如果mailTask 没有执行完成或者正在执行,应该如何写?
          if (mailTask.IsCompleted)
            {
                mailTask.Start();
            }
    }

}

public interface IMaillAppService
{
bool 发送所有邮件();
}

pchief的主页 pchief | 初学一级 | 园豆:10
提问于:2019-01-16 14:46
< >
分享
最佳答案
0

可以使用消息队列,比如rabbitmq
或者数据量不大的话,你也可以使用数据库来实现,先读取待发送的邮件,然后把待发送的邮件标记为发送中,
然后发送后将邮件消息设置为发送成功/失败

收获园豆:20
又是没有bug的一天 | 初学一级 |园豆:149 | 2019-01-17 17:50

差点忘了sql也可以发送邮件!谢谢

pchief | 园豆:10 (初学一级) | 2019-01-18 12:36
其他回答(2)
1

你没有说太清楚,是异步调用还是 ?

彪悍的代码不需要注释 | 园豆:221 (菜鸟二级) | 2019-01-16 14:58

同步 异步都可以

比如我这样写.在邮件还没发送完毕,再次执行开始任务(),会不会重复发送邮件.

private void 开始任务()
{
Task mail_Task = new Task(() =>
{
_邮件AppService.发送所有邮件();
});
mail_Task.Start();
}

支持(0) 反对(0) pchief | 园豆:10 (初学一级) | 2019-01-16 15:08

@pchief:执行一次开始任务就会重新发送一次邮件

0

还是不用task了

pchief | 园豆:10 (初学一级) | 2019-01-17 10:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册