真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#的異步與線程概念是什么

這篇文章主要介紹了C#的異步與線程概念是什么的相關知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C#的異步與線程概念是什么文章都會有所收獲,下面我們一起來看看吧。

創(chuàng)新互聯(lián)公司主要業(yè)務有網(wǎng)站營銷策劃、網(wǎng)站設計、成都網(wǎng)站建設、微信公眾號開發(fā)、小程序開發(fā)、H5頁面制作、程序開發(fā)等業(yè)務。一次合作終身朋友,是我們奉行的宗旨;我們不僅僅把客戶當客戶,還把客戶視為我們的合作伙伴,在開展業(yè)務的過程中,公司還積累了豐富的行業(yè)經(jīng)驗、營銷型網(wǎng)站建設資源和合作伙伴關系資源,并逐漸建立起規(guī)范的客戶服務和保障體系。 

最近用C#(Framework 2.0)寫了一個系統(tǒng),這個系統(tǒng)用了很多異步和線程。當我用異?;蚓€程操作、更新控件信息的時候會提示一個異常信息“線程間操作無效,從不是創(chuàng)建控件的線程訪問控件”,以前用也遇到過這種問題,最后是用Invoke解決的。但是這次遇到同樣的問題,解決方法用到了Control.CheckForIllegalCrossThreadCalls這個屬性,把它設置為false;查看MSDN的備注信息,解釋如下:

訪問 Windows 窗體控件本質上不是線程安全的。如果有兩個或多個線程操作某一控件的狀態(tài),則可能會迫使該控件進入一種不一致的狀態(tài)。還可能出現(xiàn)其他與線程相關的 bug,包括爭用情況和死鎖。確保以線程安全方式訪問控件非常重要。

.NET Framework 有助于在以非線程安全方式訪問控件時檢測到這一問題。在調試器中運行應用程序時,如果創(chuàng)建某控件的線程之外的其他線程試圖調用該控件,則調試器會引發(fā)一個 InvalidOperationException,并提示消息:“從不是創(chuàng)建控件 control name 的線程訪問它?!?/strong>

此異常在調試期間和運行時的某些情況下可靠地發(fā)生。強烈建議您在顯示此錯誤信息時修復此問題。在調試以 .NET Framework 2.0 版之前的 .NET Framework 編寫的應用程序時,可能會出現(xiàn)此異常。

注意

可以通過將 CheckForIllegalCrossThreadCalls 屬性的值設置為 false 來禁用此異常。這會使控件以與在 Visual Studio 2003 下相同的方式運行

 

從以上的解釋來看,其實異步是基于委托操作方法,以線程機制來完成的。當然從面表面上我們可以這樣理解,但是兩者具體實現(xiàn)機制是怎么樣的,我們還需要深入探討。就是編程經(jīng)驗來說,兩者在使用上還是有相同點和不同點的:

 

相同點:

1)他們都可以做任務來執(zhí)行,不會使軟件界出現(xiàn)假死現(xiàn)象。

2)在異常和線程里操作控件,如果不特殊處理的話,都會出現(xiàn)“線程間操作無效,

     從不是創(chuàng)建控件的線程訪問  控件”異常

 

不同點:

1)異步是一個某一時間點的任務;線程可以可以作為實時任務。

2)如果把異步看到線程的話,可以在線程開始時向線程內(nèi)部傳入?yún)?shù);而線程的變

     量參數(shù)來自對象的全局變量。

3)異步的結束采用回調函數(shù)來釋放資源,不需要人為干涉;而線程做為實時任務,

     在資源控制方面更多需要我為控制。

4)異步更容易控制;線程在控制的時候更需要細節(jié)方面的知識。

關于“C#的異步與線程概念是什么”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“C#的異步與線程概念是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當前名稱:C#的異步與線程概念是什么
網(wǎng)頁URL:http://weahome.cn/article/jphejo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部