System.Timers.Timer与System.Windows.Forms.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 区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++ 动态规划(数塔)
- 下一篇: SQL查询月初与月末时间