2011-02-16 44 views
1

我一直在編寫WinForms代碼,它使用BackgroundWorker來做一些異步工作,然後在完成時更新UI;我使用的是Windows 7.在一些情況下,我一直不小心,並且在子線程上訪問了UI組件。出於某種原因,這一切都運行良好,但只有在別人在Windows XP上進行測試時纔會中斷。奇怪的是,它也打破在Windows 7上代碼運行通過調試器時。Windows 7中的跨線程異常不太嚴格

有人可以幫助我理解這裏發生了什麼 - 除了我是一個馬虎,粗心的程序員:)?

Windows 7與Windows XP相比,跨線程異常的處理方式是不同的嗎?

回答

1

一般來說,這種操作的結果是不確定的。在程序的開頭將Control.CheckForIllegalCrossThreadCalls屬性設置爲true,以便在每個跨線程調用中獲得可預測的失敗。