日韩精品亚洲精品中文字幕乱伦AV|曰韩区二区三区日韩中文字幕五码|ady99久久人人看人人摸人人|动漫一区二区黄99精品视频在线|AV片在线观看亚洲中文国产精品|伦乱在线VA欧美性爱一二区|亚洲无码mv91热色视频|激情六月综合欧美精品中文

當(dāng)前位置:首頁 > 網(wǎng)站建設(shè) > 正文內(nèi)容

phpcms前臺(tái)內(nèi)容顯示html代碼(php前臺(tái)實(shí)現(xiàn)的功能)

網(wǎng)站建設(shè)11個(gè)月前 (04-05)563

引言

今天同事問了我一個(gè)問題,System.Windows.Forms.Timer是前臺(tái)線程還是后臺(tái)線程,我當(dāng)時(shí)想的是它是跟著UI線程一起結(jié)束的,應(yīng)該是前臺(tái)線程吧?我確實(shí)沒有仔細(xì)研究過他們的異同,所以帶著這個(gè)疑問探究一下System.Windows.Forms.Timer。

System.Windows.Forms.Timer

機(jī)制

System.Windows.Forms.Timer 是 Windows Forms 中的一個(gè)定時(shí)器控件,它的工作原理基于 Windows 消息循環(huán)機(jī)制。這個(gè)Windows消息循環(huán)機(jī)制說簡單一點(diǎn)就是它有一個(gè)消息隊(duì)列,一個(gè)while(true) 循環(huán)結(jié)構(gòu),一個(gè)窗口消息處理函數(shù),消息隊(duì)列保存了在應(yīng)用程序或系統(tǒng)中發(fā)生的各種事件和消息,如鼠標(biāo)點(diǎn)擊、鍵盤輸入、窗口重繪等。循環(huán)結(jié)構(gòu)消息隊(duì)列中不斷取出消息。然后通過窗口消息處理函數(shù)分發(fā)給相應(yīng)的窗口過程進(jìn)行處理。

而 System.Windows.Forms.Timer 的事件觸發(fā)機(jī)制如下:

1.Timer 控件利用 Windows 的消息機(jī)制來觸發(fā) Tick 事件。在定時(shí)器啟動(dòng)后,它會(huì)在每個(gè) Interval 時(shí)間間隔后,將一個(gè) WM_TIMER 消息放入應(yīng)用程序的消息隊(duì)列。

2.WM_TIMER 是一個(gè)定時(shí)器消息,它是由 Windows 消息循環(huán)派發(fā)的。

3.當(dāng)應(yīng)用程序處理消息循環(huán)時(shí),當(dāng)收到 WM_TIMER 消息,就會(huì)觸發(fā) Timer 的 Tick 事件。

源碼解析

來通過源碼看一下它的觸發(fā)機(jī)制(這里節(jié)選了部分重要函數(shù)),它的源碼還是比較簡單的,僅有300多行。我們先來看一下 System.Windows.Forms.Timer 的調(diào)用,一般是這樣使用:

我們就按照上面的步驟來剖析一下源碼:

第一步:創(chuàng)建實(shí)例

這一步并無特別,無參構(gòu)造默認(rèn)創(chuàng)建的實(shí)例默認(rèn) Interval 值為100。含參構(gòu)造創(chuàng)建時(shí)會(huì)將該實(shí)例添加到參數(shù)容器中。

展開全文

第二步:注冊(cè)Tick

System.Windows.Forms.Timer 聲明了一個(gè) onTimer 委托,注冊(cè) Tick 是將注冊(cè)的方法賦值給 onTimer 委托。

第三步:啟動(dòng)Timer

可以看到Timer的 Start 和 Stop,實(shí)際都是給 Enabled 賦值,所以我們可以著重看一下 Enabled 屬性的 Setter 方法。

第四步:TimerNativeWindow 啟動(dòng)

可以看到System.Windows.Forms.Timer 持有一個(gè) TimerNativeWindow 類型的私有變量,是由這個(gè)私有變量啟動(dòng)的Timer

第五步:TimerNativeWindow 實(shí)現(xiàn)

上一步中,可以看到當(dāng) Enable 置為 true 時(shí),一個(gè) TimerNativeWindow 類型的私有變量調(diào)用了 StartTimer(interval) 方法,那么來看一下這個(gè) TimerNativeWindow 的實(shí)現(xiàn)。

如下圖,可以看到當(dāng) TimerNativeWindow 調(diào)用 StartTimer時(shí),調(diào)用了 SafeNativeMethods.SetTimer 方法,傳入了當(dāng)前Timer的窗口句柄,還有加1后的 _timerID ,以及間隔 Interval。該方法的作用就是向Windows消息循環(huán)機(jī)制的消息隊(duì)列中插入一條Timer消息。

上圖中,我除了框出了StartTimer方法,還框出了 WndProc(ref Message m) 方法。這個(gè)方法就很重要了。這個(gè)就是上面所說的 Windows 消息循環(huán)機(jī)制中的窗口消息處理函數(shù)。WndProc(ref Message m) 方法就是一個(gè)用于處理窗口消息的回調(diào)函數(shù)。當(dāng)窗口接收到不同類型的消息時(shí)(例如鼠標(biāo)事件、鍵盤事件、繪圖事件等,包括Timer的觸發(fā)事件),窗口過程會(huì)被調(diào)用來處理這些消息并作出相應(yīng)的響應(yīng)。

大家可能會(huì)很好奇該方法中的兩個(gè)判斷條件是什么意思?275 和 16 分別代表什么?

phpcms前臺(tái)內(nèi)容顯示html代碼(php前臺(tái)實(shí)現(xiàn)的功能)

實(shí)際上這個(gè)是Windows消息標(biāo)識(shí)符的十進(jìn)制值。實(shí)際上他們是在名為 WinUser.h 的c++ 頭文件中定義的。它隨SDK一起安裝到電腦上,可以通過Everything 直接找到它。

而我們要找的消息 275 和 16 就是下面這兩個(gè)

WM_TIMER :其16進(jìn)制為0x0113,轉(zhuǎn)化為10進(jìn)制則為275。

WM_CLOSE :其16進(jìn)制為0x0010,轉(zhuǎn)化為10進(jìn)制則為16。

這樣就可以理解WndProc(ref Message m) 方法的作用了,就是獲取到 WM_TIMER 消息時(shí),觸發(fā) System.Windows.Forms.Timer 的 OnTick 方法。而獲取到 WM_CLOSE 消息時(shí),則調(diào)用 StopTimer,結(jié)束定時(shí)器。

結(jié)論

通過上面的機(jī)制和源碼分析,可以得出結(jié)論,System.Windows.Forms.Timer 并不是線程,而是依賴于UIx線程,依賴于Windows消息循環(huán)機(jī)制而實(shí)現(xiàn)的定時(shí)器。所以回到開篇的問題,這個(gè)問題就有問題,System.Windows.Forms.Timer 并不是線程。

出處:duidaima.com/Group/Topic/ASP.NET/14727

版權(quán)聲明:本文來源于網(wǎng)友收集或網(wǎng)友供稿,僅供學(xué)習(xí)交流之用,如果有侵權(quán),請(qǐng)轉(zhuǎn)告小編或者留言,本公眾號(hào)立即刪除。

關(guān)注公眾號(hào) ↑ ↑ ↑: DotNet開發(fā)跳槽 ?

點(diǎn)分享

點(diǎn)收藏

點(diǎn)點(diǎn)贊

點(diǎn)在看

掃描二維碼推送至手機(jī)訪問。

版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。

本文鏈接:http://www.atlasseeker.com/post/102867.html

“phpcms前臺(tái)內(nèi)容顯示html代碼(php前臺(tái)實(shí)現(xiàn)的功能)” 的相關(guān)文章

如何制作自己的網(wǎng)站(如何建自己的網(wǎng)站)

如何制作自己的網(wǎng)站(如何建自己的網(wǎng)站)

本篇文章給大家談?wù)勅绾沃谱髯约旱木W(wǎng)站,以及如何建自己的網(wǎng)站對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、如何制作一個(gè)自己的網(wǎng)頁 2、如何做網(wǎng)站? 3、如何創(chuàng)建網(wǎng)站? 4、怎么制作自己的網(wǎng)頁? 5、如何制作網(wǎng)頁? 6、如何制作一個(gè)網(wǎng)站? 如何制作一個(gè)...

關(guān)于深圳網(wǎng)站建設(shè)公司的信息

關(guān)于深圳網(wǎng)站建設(shè)公司的信息

今天給各位分享深圳網(wǎng)站建設(shè)公司的知識(shí),其中也會(huì)對(duì)進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、深圳網(wǎng)站建設(shè)哪家公司好,深圳最好的建站公司 2、深圳哪個(gè)網(wǎng)站建設(shè)公司好? 3、深圳網(wǎng)站設(shè)計(jì)公司哪家比較好? 4、網(wǎng)站建設(shè)公司哪家比較好 5、深圳高...

湘潭網(wǎng)站優(yōu)化(湘潭百度整站優(yōu)化服務(wù))

湘潭網(wǎng)站優(yōu)化(湘潭百度整站優(yōu)化服務(wù))

今天給各位分享湘潭網(wǎng)站優(yōu)化的知識(shí),其中也會(huì)對(duì)湘潭百度整站優(yōu)化服務(wù)進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、湖南湘潭哪里有網(wǎng)站設(shè)計(jì)和建設(shè)的公司? 2、網(wǎng)站SEO優(yōu)化的常用方法有哪些 3、長沙網(wǎng)絡(luò)推廣公司哪家好? 湖南湘潭哪里有網(wǎng)站設(shè)計(jì)和建設(shè)的公...

天津網(wǎng)站優(yōu)化(天津網(wǎng)站搜索優(yōu)化)

天津網(wǎng)站優(yōu)化(天津網(wǎng)站搜索優(yōu)化)

今天給各位分享天津網(wǎng)站優(yōu)化的知識(shí),其中也會(huì)對(duì)天津網(wǎng)站搜索優(yōu)化進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、天津網(wǎng)站優(yōu)化服務(wù)哪家比較好些?求幫忙 2、天津網(wǎng)站優(yōu)化:網(wǎng)站關(guān)鍵詞優(yōu)化怎么做 3、天津做SEO網(wǎng)站優(yōu)化合理的價(jià)位是多少 4、天津如何給網(wǎng)站...

三年級(jí)上冊(cè)英語ppt課件免費(fèi)下載譯林版(譯林版三年級(jí)上冊(cè)英語PPT)

三年級(jí)上冊(cè)英語ppt課件免費(fèi)下載譯林版(譯林版三年級(jí)上冊(cè)英語PPT)

今天給各位分享三年級(jí)上冊(cè)英語ppt課件免費(fèi)下載譯林版的知識(shí),其中也會(huì)對(duì)譯林版三年級(jí)上冊(cè)英語PPT進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧!本文目錄一覽: 1、誰有譯林版小學(xué)三年級(jí)上冊(cè)英語 第三單元第一課時(shí) My friends 的說課稿 2、哪里有小學(xué)三年級(jí)上冊(cè)(三年...

理療館開業(yè)活動(dòng)宣傳單模板(理療養(yǎng)生館宣傳單)

理療館開業(yè)活動(dòng)宣傳單模板(理療養(yǎng)生館宣傳單)

本篇文章給大家談?wù)劺懑燄^開業(yè)活動(dòng)宣傳單模板,以及理療養(yǎng)生館宣傳單對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、養(yǎng)生館準(zhǔn)備開業(yè)想在朋友圈發(fā)宣傳應(yīng)該怎么編輯好? 2、尋找推拿店開店宣傳單樣本 3、理療店怎么做推廣宣傳 4、比如養(yǎng)生店開業(yè)如何宣傳價(jià)目表 5、讓...