我需要在右工作线程上调用定时器线程上的方法。 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