有什麼辦法讓委託在特定線程上運行?在特定線程上調用委託C#
說我有:
CustomDelegate del = someObject.someFunction;
Thread dedicatedThread = ThreadList[x];
我能有一個一致的背景下長期運行的線程並調用我自己的代表,每當我需要它。它必須每次都是相同的線程。
[編輯]
爲什麼我想這是一個專門的線程的原因是時間是我INTEN在其上運行的委託後y
毫秒掛起線程,並繼續當我運行的線程另一位代表就此。我看到這是不可能的。我將有一個委託隊列,讓線程的主函數從中讀取並運行。
爲了澄清一個具體的例子,我有一個玩家線程的遊戲系統。我希望每個playerthread都能爲其上的遊戲事件運行事件處理程序。如果事件處理程序花費太多時間,我希望能夠暫停該特定播放器,直到下一個事件掛起其線程爲止。
因此,有一個專用的線程可以運行多個事件處理程序,我可以暫停某個特定的玩家的AI,以防它被竊聽或時間過長。
謝謝你指出ActionThread,看起來非常有用。我需要封裝外部代碼,在線程中我幾乎沒有任何控制權。我所擁有的只是代表外部代碼。如果我可以確保該對象在一個特定的線程中,我可以通過暫停該線程來「暫停」該對象。我不認爲線程池將允許我很好地「暫停」對象。 – Raynos 2010-08-14 08:10:39
警告:通過掛起/恢復線程可能(甚至可能)意外造成死鎖。如果可能,請更改外部代碼。如果這是不可能的,那麼考慮使用線程優先級而不是掛起/恢復。 – 2010-08-14 10:23:30