4
從線程A我希望異步調用MethodA()
(以便它不會阻塞線程A)在線程B上運行我已啓動的特定線程,以便它中斷線程B正在執行的操作。如何異步調用方法,但在特定線程上?
這是可能的,而不必主動輪詢線程B中的MethodA()
調用請求嗎?
編輯:更具體,我想對到MethodA()
所有的呼叫在線程B.
編輯2:沒有線程是UI線程。雖然我知道線程B正在運行,但如果它不是/不拋出異常,能夠返回false會很好。
從線程A我希望異步調用MethodA()
(以便它不會阻塞線程A)在線程B上運行我已啓動的特定線程,以便它中斷線程B正在執行的操作。如何異步調用方法,但在特定線程上?
這是可能的,而不必主動輪詢線程B中的MethodA()
調用請求嗎?
編輯:更具體,我想對到MethodA()
所有的呼叫在線程B.
編輯2:沒有線程是UI線程。雖然我知道線程B正在運行,但如果它不是/不拋出異常,能夠返回false會很好。
不創建線程B worker的特定實現是不可能的。 線程B工作者應該像無限循環或另一種信號機制,如EventWaitHandle
。在循環的每次迭代中,線程B工作人員都應該檢查一些可以由另一個線程填充的委託隊列。
如果您希望它在該線程上運行,那麼只需在該線程上同步運行即可。 MethodA()可以觸發一個線程B檢查的AutoResetEvent。 – itsme86
兩個線程是否都運行?你有權訪問Thread2嗎? – MBen
您可以使用SynchronizationContext –