[轉]線程間操作無效: 從不是創建控件“...”的線程訪問它。

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

.NET Framework 有助於在以非線程安全方式訪問控件時檢測到這一問題。在調試器中運行應用程序時,如果創建某控件的線程之外的其他線程試圖調用該控件,則調試器會引發一個 InvalidOperationException,並提示消息:“從不是創建控件 control name 的線程訪問它。”

此異常在調試期間和運行時的某些情況下可靠地發生。強烈建議您在顯示此錯誤信息時修復此問題。在調試以 .NET Framework 2.0 版之前的 .NET Framework 編寫的應用程序時,可能會出現此異常。
注意
可以通過將 CheckForIllegalCrossThreadCalls 屬性的值設置爲 false 來禁用此異常。這會使控件以與在 Visual Studio 2003 下相同的方式運行。

下面的代碼示例演示如何從輔助線程以線程安全方式和非線程安全方式調用 Windows 窗體控件。它演示一種以非線程安全方式設置 TextBox 控件的 Text 屬性的方法,還演示兩種以線程安全方式設置 Text 屬性的方法。


轉自:http://www.cnblogs.com/imissherso/archive/2007/01/28/632480.html

發佈了40 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章