我们将一些.NET类公开为COM组件。客户拥有一个服务,该服务利用来自多线程C ++应用程序的这些COM组件。事情通常很好但在某些情况下我们看到在此环境中将请求排队到System.Threading.Threadpool的问题。基本上,当我们使用System.Threading.ThreadPool.QueueUserWorkItem
对用户工作进行排队时,即使在任何时候正在进行的同时请求不超过15-20个,我们也会收到错误。
这项服务在Quad核心服务器上运行,并没有真正受到任何重大资源压力。
从.NET COM组件中我们排队一些Web服务调用,因为我们不希望在这些调用正在进行时保持整个处理顺序(它们基本上是火灾和忘记类型的任务)。
所以我想知道的是,是否有人了解Applicaion域如何从这样的环境初始化,所以我可以尝试开始追踪这个问题。
亲切的问候
诺尔。
答案 0 :(得分:0)
QueueUserWorkItem
返回值的文档说:
如果方法成功排队,则true ;如果工作项无法排队,则抛出
NotSupportedException
。
这似乎不允许错误的回报。因此,要么花时间与.NET Reflector了解这种方法的错误含义,要么与Microsoft交谈(要么有文档或实现错误)。如果采取后一种方式,将最短的重新组合起来就可以了。