首页 > 学院 > 开发设计 > 正文

如何通过多线程轮询待发送邮件进行发送

2019-11-17 02:37:20
字体:
来源:转载
供稿:网友

如何通过多线程轮询待发送邮件进行发送

Posted on 2015-01-19 21:25 衡斅 阅读(...) 评论(...) 编辑 收藏

  默认情况下,C# 程序具有一个线程。此线程执行程序中以 Main 方法开始和结束的代码。Main 直接或间接执行的每一个命令都由默认线程(或主线程)执行,当 Main 返回时此线程也将终止。不过,可以创建辅助线程,以便与主线程一起并行执行代码。这些线程通常称为“辅助线程”。

  多线程处理解决了吞吐量和响应性的问题,但同时也带来了资源共享问题,如死锁和争用状态。多线程特别适用于需要不同资源(如文件句柄和网络连接)的任务。为单个资源分配多个线程可能会导致同步问题,线程会被频繁阻止以等待其他线程,从而与使用多线程的初衷背道而驰。

  下面本人分享-如何通过多线程轮询待发送邮件进行发送。实现过程:设计发件箱数据表,配置发件服务器、开发WinForm程序进行发送。

1. 设计发件箱发件箱记录发送邮件,内容包括-发件人、收件人、邮件标题、邮件内容、增加时间、发送时间及发送失败信息。

2.发送邮件配置发送邮件采用C# SMTP协议,需要设置发件人及发送服务器相关信息

3.实现WinForm 程序程序界面设计为工具栏、待发送信息,发送情况及显示发送进程信息。程序设计为两个计时器,一个轮询待发送邮件,一个进行邮件发送。

3.1.读取数据库待发送邮件使用计时器轮询发件箱,读取待发送邮件。

3.2.线程发送邮件使用线程调用发件邮件组件进行邮件发送。

3.3.邮件发送处理发送成功后,更新待发送邮件状态为:“已发送”,发送失败时,更新待发送邮件状态为:“待发送”,同时设置下次轮时间为下30分钟。

至此,通过多线程轮询待发送邮件进行邮件发送功能实现分享完毕。多线程在C#开发比较难调试,为此需要对程序发送日志进行详情记录并报告线程执行情况,以便开发人员维护。单独使用线程(Thread)进行发送邮件,很容易造成程序假死,为此,本人采用使用计时器的方式调用线程(Thread)。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表