程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 如何通過多線程輪詢待發送郵件進行發送,多線程輪詢

如何通過多線程輪詢待發送郵件進行發送,多線程輪詢

編輯:C#入門知識

如何通過多線程輪詢待發送郵件進行發送,多線程輪詢


  默認情況下,C# 程序具有一個線程。此線程執行程序中以 Main 方法開始和結束的代碼。Main 直接或間接執行的每一個命令都由默認線程(或主線程)執行,當 Main 返回時此線程也將終止。不過,可以創建輔助線程,以便與主線程一起並行執行代碼。這些線程通常稱為“輔助線程”。

  多線程處理解決了吞吐量和響應性的問題,但同時也帶來了資源共享問題,如死鎖和爭用狀態。多線程特別適用於需要不同資源(如文件句柄和網絡連接)的任務。為單個資源分配多個線程可能會導致同步問題,線程會被頻繁阻止以等待其他線程,從而與使用多線程的初衷背道而馳。

  下面本人分享-如何通過多線程輪詢待發送郵件進行發送。實現過程:設計發件箱數據表,配置發件服務器、開發WinForm程序進行發送。

1. 設計發件箱
發件箱記錄發送郵件,內容包括-發件人、收件人、郵件標題、郵件內容、增加時間、發送時間及發送失敗信息。

2. 發送郵件配置
發送郵件采用C# SMTP協議,需要設置發件人及發送服務器相關信息

3. 實現WinForm 程序
程序界面設計為工具欄、待發送信息,發送情況及顯示發送進程信息。程序設計為兩個計時器,一個輪詢待發送郵件,一個進行郵件發送。


3.1. 讀取數據庫待發送郵件
使用計時器輪詢發件箱,讀取待發送郵件。


3.2. 線程發送郵件
使用線程調用發件郵件組件進行郵件發送。


3.3. 郵件發送處理
發送成功後,更新待發送郵件狀態為:“已發送”,發送失敗時,更新待發送郵件狀態為:“待發送”,同時設置下次輪時間為下30分鐘。


至此,通過多線程輪詢待發送郵件進行郵件發送功能實現分享完畢。多線程在C#開發比較難調試,為此需要對程序發送日志進行詳情記錄並報告線程執行情況,以便開發人員維護。單獨使用線程(Thread)進行發送郵件,很容易造成程序假死,為此,本人采用使用計時器的方式調用線程(Thread)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved