日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

發布時間:2025/7/14 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 区别的全部內容,希望文章能夠幫你解決所遇到的問題。

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