日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

System.Timers.Timer与System.Windows.Forms.Timer 区别

發布時間:2025/7/14 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 System.Timers.Timer与System.Windows.Forms.Timer 区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
根據msdn解釋:System.Threading.Timer 是一個簡單的輕量計時器,它使用回調方法并由線程池線程提供服務。 不建議將其用于 Windows 窗體,因為其回調不在用戶界面線程上進行。 System.Windows.Forms.Timer 是用于 Windows 窗體的更佳選擇。 Windows 窗體 Timer 組件是單線程組件,精度限定為 55 毫秒。 如果您需要更高精度的多線程計時器,請使用System.Threading 命名空間中的 Timer 類。要獲取基于服務器的計時器功能,可以考慮使用 System.Threading.Timer,它可以引發事件并具有其他功能。

? ? ? ? ? 簡而言之,System.Threading.Timers命名空間中的Timer類主要是針對多線程情況下使用的。而System.Windows.Forms.Timer中的Timer主要是單線程的,即主要是針對某個窗體使用的。舉個例子,比如主窗體中可以放一個System.Windows.Forms.Timer動態顯示當前時間,每秒更新一次時間顯示在右下角.

? private void timer1_Tick(object sender, EventArgs e)
??????? {
??????????? lblTime.Text = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss");
??????????? lblTime.ForeColor = Color.FromArgb(0x2b, 0x47, 0x5b);
??????? }

而像主窗體中的Socket的通信,則要單獨開一個線程處理。例如在發送心調包時就可以用到 System.Threading.Timer來定時發送心跳包了,此時System.Threading.Timer就只在監控心跳包的這個線程上。下面是示例代碼:

??? /// <summary>
??? /// 監聽Socket的連接狀態
??? /// 如果Socket連接斷開,則進行重新連接
??? /// 如果Socket為連接狀態,則發送狀態確認包
??? /// </summary>
??? private void ListenSocCon()
??? {
??????? int interval = 0;
??????? if (ConfigurationManager.AppSettings["ListenSocTime"] != null)
??????????? {
??????????? int i = 0;
??????????? if (int.TryParse(ConfigurationManager.AppSettings["ListenSocTime"].ToString(), out i))
??????????????? {
??????????????? interval = 1000 * i;
??????????????? }
??????????? else
??????????????? {
??????????????? interval = 10000;
??????????????? }
??????????? }
??????????? //記下日志
??????????? string strOuput = string.Format("開啟監聽Socket連接線程,時間間隔為:{0}\n",interval.ToString());
??????????? //將信息寫入到日志輸出文件
??????????? DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);
??????????? try
??????????? {

??????????????? //使用TimerCallback 委托指定希望 Timer 執行的方法
??????????????? TimerCallback timerDelegate = new TimerCallback(tm_ConSock);
??????????????? timerConSocket = new System.Threading.Timer(timerDelegate, this, 0, interval);
??????????? }
??????????? catch (Exception e)
??????????? {
??????????????? strOuput = string.Format("監聽Socket的連接狀態出現錯誤:{0}\n", e.Message);
??????????????? //將信息寫入到日志輸出文件
??????????????? DllComm.TP_WriteAppLogFileEx(DllComm.g_AppLogFileName, strOuput);
??????????? }
??????? }

??? 要想更詳細的了解System.Threading.Timer和? System.Windows.Forms.Timer請參考MSDN:

? http://msdn.microsoft.com/zh-cn/library/system.threading.timer.aspx;

http://msdn.microsoft.com/zh-cn/library/system.windows.forms.timer.aspx。



轉載于:https://www.cnblogs.com/kevinGao/archive/2011/11/04/2236170.html

總結

以上是生活随笔為你收集整理的System.Timers.Timer与System.Windows.Forms.Timer 区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。