我正在运行一个具有2个主要目标的winservice。如何设置WCF线程以进行不同的调度
- 执行/处理暴露的webmethods。
- 运行消耗CPU分配的内部进程。
的问题是,当我执行许多内部流程|正在排队到线程池或taskpool(如任务)中,webMethods的执行需要更多的时间,WCF还排队其执行相同的线程池。甚至在将内部进程任务优先级设置为最低并将webmethods线程优先级设置为高时也会发生这种情况。
我希望Framework 4.0能够改善这一点,而且他们有,但是如果CPU正在处理其他内部任务,系统仍然需要花费相当长的时间来处理WCF排队的任务。
- 是否有可能更改WCF使用的线程池到另一个?
- 是否可以手动更改任务队列(全局任务队列,本地任务队列)。
- 是否有可能手动处理2个行为不同的任务队列?
任何有关该主题的帮助都将被占用。
吉拉德。
我已经使用SetMinThreads,导致线程池默认生成更多的线程。这部分解决了这个问题,但是导致进程在负载非常低的情况下仍然可以分配线程。当进程中分配的小任务也阻塞了线程池队列时,这并不能完全解决问题。 通过更改线程优先级,可以禁止所有内部线程,并优先考虑来自用户的请求,但只有在线程池执行任务时才有可能。 Thread.CurrentThread.Priority = ThreadPriority.Highest – Gilad 2010-05-23 07:36:42