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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

System.Threading.Timer类的TimerCallback 委托

發(fā)布時間:2025/6/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 System.Threading.Timer类的TimerCallback 委托 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

System.Threading.Timer類的TimerCallback 委托

?

Written by: Rickie Lee

Nov. 19, 2004

System.Threading.Timer 是一個使用回調(diào)方法的計時器,而且由線程池線程服務,簡單且對資源要求不高。

?

只要在使用 Timer,就必須保留對它的引用。對于任何托管對象,如果沒有對 Timer 的引用,計時器會被垃圾回收。即使 Timer 仍處在活動狀態(tài),也會被回收。當不再需要計時器時,請使用 Dispose 方法釋放計時器持有的資源。

?

使用 TimerCallback 委托指定希望 Timer 執(zhí)行的方法。計時器委托在構(gòu)造計時器時指定,并且不能更改。此方法不在創(chuàng)建計時器的線程中執(zhí)行,而是在系統(tǒng)提供的線程池線程中執(zhí)行。

?

創(chuàng)建計時器時,可以指定在第一次執(zhí)行方法之前等待的時間量(截止時間)以及此后的執(zhí)行期間等待的時間量(時間周期)。可以使用 Change 方法更改這些值或禁用計時器。

?

Demo application:

應用場景:在windows form程序自動執(zhí)行某項工作后,希望其windows form能夠自動關(guān)閉。

代碼設(shè)計:(1)首先聲明Timer變量:

private System.Threading.Timer timerClose;

?

2)在上述自動執(zhí)行代碼后面添加如下Timer實例化代碼:

// Create a timer thread and start it

timerClose = new System.Threading.Timer(new TimerCallback(timerCall), this, 5000, 0);

?

Timer構(gòu)造函數(shù)參數(shù)說明:

Callback一個 TimerCallback 委托,表示要執(zhí)行的方法。

State一個包含回調(diào)方法要使用的信息的對象,或者為空引用(Visual Basic 中為 Nothing

dueTime調(diào)用 callback 之前延遲的時間量(以毫秒為單位)。指定 Timeout.Infinite 以防止計時器開始計時。指定零 (0) 以立即啟動計時器。

Period:調(diào)用 callback 的時間間隔(以毫秒為單位)。指定 Timeout.Infinite 可以禁用定期終止。

?

3)定義TimerCallback委托要執(zhí)行的方法:

private void timerCall(object obj)

{

????? timerClose.Dispose();

????? this.Close();

}

?

當然,除了使用上述System.Threading.Timer類的TimerCallback 委托機制外,應該還有很多其他的辦法。另外,這里只是demoTimerCallback委托的簡單應用。

?

Appendix about the article

在讀一段關(guān)于Design Pattern的代碼時,看到使用TimerTimerCallback委托,隨并記錄下來。

?

Reference:

1, MSDN, System.Threading.Timer class

posted on 2004-11-20 11:27 Rickie 閱讀(5590) 評論(16) ?編輯 收藏 網(wǎng)摘 所屬分類: D.多線程技術(shù)


評論

166.111.33.* 2004-11-20 11:45 ? 試試沒有注冊的用戶能不能發(fā)文
謝謝

??????????
2004-11-20 22:22 ? 用Threading.Timer來完成“應用場景:在windows form程序自動執(zhí)行某項工作后,希望其windows form能夠自動關(guān)閉。”
1. 好像大材小用了。
2. 由線程池執(zhí)行WinForm控件(包括Form)的方法非常危險!因為這些方法只能由創(chuàng)建該窗口控件的線程執(zhí)行。
3. 由線程池線程服務,資源要求不高的說法是有問題的,因為 a)需要線程切換;b)需要創(chuàng)建windows核心對象。

總之,System.Threading.Timer改成System.Windows.Forms.Timer更加合適

??????????
[樓主] 2004-11-22 06:23 ? Thank you, msolap.
*
1. 好像大材小用了。
是的,這里只是提供一個簡單的Demo演示一下而已。 2. 由線程池執(zhí)行WinForm控件(包括Form)的方法非常危險!因為這些方法只能由創(chuàng)建該窗口控件的線程執(zhí)行。
Sorry,沒有很明白你的意思,希望可以進一步闡述,謝謝。
*
根據(jù)Microsoft的文檔:TimerCallback委托聲明的回調(diào)方法,不在創(chuàng)建計時器的線程中執(zhí)行(創(chuàng)建計時器的線程也就是創(chuàng)建該窗口控件的線程),而是在系統(tǒng)提供的線程池線程中執(zhí)行。
3. 由線程池線程服務,資源要求不高的說法是有問題的,因為 a)需要線程切換;b)需要創(chuàng)建windows核心對象。 System.Threading.Timer 是一個使用回調(diào)方法的計時器,而且由線程池線程服務,簡單且對資源要求不高--這是源于Microsoft的說法(也有可能Microsoft的說法不嚴謹)。
*
如果根據(jù)上述特定的Demo程序而言,正如你說言,System.Windows.Forms.Timer可能更合適。

msolap, 謝謝你的回復。


??????????
2004-11-22 16:36 ? 針對第2)點,說得直白一點就是所有窗口(包括上面的控件)只能由主線程執(zhí)行,不能由其他線程執(zhí)行。(窗口消息隊列是依附于窗口線程的)

第3)點,英文原文應該是
System.Threading.Timer is a simple, lightweight timer that uses callback methods and is served by threadpool threads.

lightweigth并非指對資源要求低,只是相對于過去常用的CreateWaitableTimer(Win32 SDK)而言低一點。
其實從貴文中第二段:“當不再需要計時器時,請使用 Dispose 方法釋放計時器持有的資源。” 就可以體會到它對資源的要求。:-)

??????????
[樓主] 2004-11-23 00:31 ? Thanks for your explanation. So far I really know what you mean on Point 2.
*
But why do you think it's very dangerous when doing it this way?

Thanks.

??????????
2004-11-23 23:33 ? 主線程肯定不會是線程池里的某個線程,所以在線程池里調(diào)用Form的this.Close(),危險!應該讓主線程調(diào)用才行。
??????????
[樓主] 2004-11-24 02:28 ? Thank you, msolap.
??????????
2005-08-23 11:43 ? 可以作為定時任務來完成,這是一個不錯的方式
??????????
61.141.195.* 2005-09-08 10:06 我遇到了一個問題,有個api函數(shù),使用form.timer調(diào)用能夠正確的返回值,但使用threading.timer和threading.thread都不行,看來還是有區(qū)別的。qq9611153
????????
59.120.72.* 2006-01-06 17:54 請問一下以下code,為什麼Timer無法啟動呢?
謝謝
System.Windows.Forms.Timer tmr2 = new System.Windows.Forms.Timer();
private void button3_Click(object sender, System.EventArgs e)
{

System.Threading.ThreadStart thds = new ThreadStart(label);
System.Threading.Thread thd = new Thread(thds);
thd.Start();
}

private void label()
{

tmr2.Interval = 100;
tmr2.Tick +=new EventHandler(tmr2_Tick);
tmr2.Start();

}


private void tmr2_Tick(object sender, EventArgs e)
{
label1.Text = System.Convert.ToString(System.Environment.TickCount);
}

????????
222.90.119.* 2006-03-15 11:39 請問樓主有沒有解決代碼2的多線程問題?我也有這個代碼,并按照codeproject上面的方法嘗試解決多線程問題,但沒有成功。如果你有解決,希望能給一份修改后的源碼,不勝感激!!!
goneaway@sohu.com

????????
124.243.197.* 2007-04-16 01:33 Threading下的timer控件的回調(diào)函數(shù)的確是在線程池里運行的,在委托回調(diào)函數(shù)里直接訪問主線程創(chuàng)建的對象會拋出異常。

可以用timer控件的SynchronizingObject來和主線程中的對象做同步(比如form),或者用主線程中的對象的InvokeRequired()方法來判斷是否要同步,再用form.Invoke()或form.BeginInvoke()在同一線程中回調(diào)。

????????
220.133.45.* 2008-09-26 13:14 不能使用System.Threading.Timer去直接this.Close或label,會Exception
因為其非主線程,至少也要用BeginInvoke & delegate

而且System.Threading.Timer也很損記憶體
在PC上沒感覺,但用在WinCE就感覺很苦惱

????????

?

轉(zhuǎn)載于:https://www.cnblogs.com/qiantuwuliang/archive/2009/07/03/1516201.html

總結(jié)

以上是生活随笔為你收集整理的System.Threading.Timer类的TimerCallback 委托的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久影院午夜 | 无码人妻精品一区二区50 | 老汉av | 伦理欧美| 国产av无码专区亚洲av | 国产精品久久久精品三级 | 欧美精品福利视频 | 一级片在线免费观看 | 亚洲成人av中文字幕 | 国内精品久久久久久 | 不卡一二区 | 日韩一区视频在线 | 国产男女视频 | 伊人网在线免费观看 | 国产精品中文无码 | 亚洲精品天堂在线观看 | 久久9966| 中文字幕精品三级久久久 | 国产网站在线 | 亚洲精品视频国产 | 99国内揄拍国内精品人妻免费 | 亚洲色图自拍 | 亚洲黄色在线观看视频 | 欧美另类xxx | 永久免费看mv网站入口亚洲 | 亚洲天天综合网 | 性xxx欧美 | 国产视频在线观看视频 | 91片黄在线观 | 成人激情文学 | 在线观看av的网站 | 久久综合九色综合网站 | 久久伊人中文字幕 | 欧美第一网站 | www.奇米| 校园伸入裙底揉捏1v1h | 亚洲成人一二三区 | av导航网 | 椎名空在线播放 | 夜色在线影院 | 欧美日韩精品区 | 强开乳罩摸双乳吃奶羞羞www | 久久久久人妻一区精品色 | 播色网| 欧美视频一区 | 国产精品ww | 成都4电影免费高清 | 久久久久亚洲色欲AV无码网站 | 黄色a视频 | 亚洲一区二区三区久久久成人动漫 | 亚洲av无码日韩精品影片 | 亚洲涩视频 | 色婷婷777 | 国产又粗又猛又爽又黄的网站 | 天堂网站| 欧美视频免费 | 欧洲毛片| 小sao货大ji巴cao死你 | 97超碰中文 | 18禁裸乳无遮挡啪啪无码免费 | 69激情网 | 免费在线观看国产精品 | 五月天婷婷激情 | 最好看的2019年中文视频 | 中文字幕11页中文字幕11页 | 美国一区二区三区 | 国产日韩欧美视频在线 | 亚洲综合图| 懂色av成人一区二区三区 | 中文字幕7 | 国产伦理一区 | 国产另类在线 | 亚洲永久精品一区二区 | 欧美视频在线一区 | 在线中文视频 | av在线不卡网站 | 操女人网 | 爱搞逼综合 | 解开人妻的裙子猛烈进入 | 高清无码一区二区在线观看吞精 | 性——交——性——乱免费的 | 最新福利视频 | 男男上床视频 | 亚洲动漫精品 | 日韩福利视频在线观看 | 伊人久久综合影院 | 亚洲黄色a级片 | 开元在线观看视频国语 | 日日免费视频 | 男女乱淫| 色哟哟中文字幕 | 麻豆网站在线免费观看 | 亚洲精品网站在线播放gif | 亚洲精品视频久久 | 国产精品69久久久久孕妇欧美 | www操| 国产中文字幕亚洲 | 日日碰狠狠添天天爽无码 | 亚洲一区二区三区四区五区午夜 |