0
我有一個窗口的控制線程變化的形式工作表單應用程序,如何加入線程與另一個
我實現了防止線程交叉存取invoke方法,
但是當我關閉窗體,第二個線程仍然工作,並嘗試訪問控制並拋出一個對象引用未設置爲對象的異常的實例
我怎麼能保證防止第二線程工作,如果第一個是不是活
無需人工檢查建議
在此先感謝
我有一個窗口的控制線程變化的形式工作表單應用程序,如何加入線程與另一個
我實現了防止線程交叉存取invoke方法,
但是當我關閉窗體,第二個線程仍然工作,並嘗試訪問控制並拋出一個對象引用未設置爲對象的異常的實例
我怎麼能保證防止第二線程工作,如果第一個是不是活
無需人工檢查建議
在此先感謝
此前關閉的形式,你可以通知線程,它即將被取消。例如,如果您的線程使用BackgroundWorker
,則可以調用CancelAsync方法。
更新
要使用Thread
類時支持這一點,你可以調用Abort - 不推薦 - 或者你可以使用一個共享變量。基本上你可以有一個線程定期檢查的布爾型isCancelled
- 如果它是假的,線程返回。然後你可以從UI線程中設置這個布爾值來指示後臺線程停止。在從任一線程訪問它之前,您還需要確保正確地使用lock
布爾值。
還有其他的技術可以使用 - 如果你發佈你的線程代碼,我們可以幫助你更多的。
需要更多關於如何創建線程的信息,例如使用Timer,BackgroundWorker等。此外,用戶如何通過代碼關閉表單? – AMissico 2010-06-02 15:15:25
你有沒有檢查,如'如果對象不是什麼然後調用'。 – AMissico 2010-06-02 15:16:29
您希望第二個線程在表單關閉後繼續執行,還是希望此線程在表單關閉時停止? – AMissico 2010-06-02 15:17:04