none
C# 佈署及安裝 RRS feed

  • 問題

  • 請問,本人將C#程式拿到別台電腦上執行時,只要執行到跟Thread有關的程式碼CheckForIllegalCrossThreadCalls = false 或是 Thread.Sleep,就會出現錯誤視窗,接著只能點回報或不回報終止程式,也沒有錯誤訊息,有安裝.net2.0,其他功能可以正常使用,請問是什麼原因呢
    2011年5月31日 上午 08:37

解答

  • CheckForIllegalCrossThreadCalls = false 的效果是:

    當控制項的建立執行緒以外的執行緒嘗試存取該控制項的其中一個方法或屬性時,它通常會導致無法預期的結果。常見的無效執行緒活動為在可存取控制項的 Handle 屬性之錯誤執行緒上呼叫。將 CheckForIllegalCrossThreadCalls 設定為 true,可以在偵錯時更容易找到並診斷這種執行緒活動。請注意,如果在偵錯工具之外啟動應用程式,不當的跨執行緒呼叫總是會引發例外狀況。

    我個人的建議是,你需要檢查你的程式是否沒有做安全的跨執行緒呼叫,CheckForIllegalCrossThreadCalls = false 基本上是有點鴕鳥心態的作法,而且很難保證系統是穩定的。

    關於 Windows Forms 上的安全執行緒呼叫,可參考:http://msdn.microsoft.com/zh-tw/library/ms171728(v=vs.80).aspx


    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579
    2011年5月31日 上午 08:55
    版主