我需要在右工作線程上調用定時器線程上的方法。 Invoke/BeginInvoke進程正在爲我工作。共有2個線程共享一個線程數據容器進行數據交換。一個是填充隊列,一個是隊列處理。如果Queue在空狀態後被填充,則會引發事件。所有的問題都是由計時器引起的,計時器會在其已過去的事件上打開新的線程。我使用Dispatcher在正確的線程上分派,但一切正常,除了這個Dispatcher。 :-)C#控制檯應用程序中調度程序的問題
請問有沒有人看到問題在哪裏?
完整的測試代碼在這裏:http://pastebin.com/jqYbR9PS。
調試輸出是這樣的:
App Thread ID: 9
Processor Thread ID: 10
Processor Dispatcher Thread ID: 10
The thread '<No Name>' (0x888) has exited with code 0 (0x0).
Processor QueueListener caller Thread ID: 12
Processor Dispatcher Thread ID: 10
Processor invoking ProcessQueue.
...here shut be processing output...
Processor invoked ProcessQueue.
App Thread ID on end: 9
The thread 'vshost.RunParkingWindow' (0x17c4) has exited with code 0 (0x0).
The thread '<No Name>' (0x820) has exited with code 0 (0x0).
The program '[5760] TestingConsoleApplication.vshost.exe: Managed (v4.0.30319)' has exited with code 0 (0x0).
ProcessQueue不調用/調用。
謝謝。
就我個人而言,我會使用任務並行庫這種類型的東西,尤其是在控制檯應用程序。也許這對你來說是一種選擇? –
您是否看到任何其他方式,如何將計時器事件線程返回主應用程序線程? – Fanda
如果我讀得很好,任務並行是爲了平行運行。 :-)我的任務將是數據庫同步任務,所以他們應該順序運行... – Fanda