我遇到了一个问题,我以前没有遇到过。我正在通过BeginXXX / EndXX模式异步调用一个方法,并为一些定时功能提供额外的包装,如下所示:
BeginGetStuffTimed(arguments)
{
var timingstuff = TimingStuff;
var callback = new AsyncResult(CallbackMethod);
service.BeginGetStuff(CallbackMethod, timingstuff);
}
CallbackMethodTimed(IAsyncResult result)
{
SaveTiming(result.AsyncState...);
service.EndGetStuff;
}
现在偶尔会抛出异常:
异步终端呼叫错误的频道。 参数名称:结果
因为它不会发生总是这种困惑我。我当时认为IIS无法跟上请求而fubar,所以我在我的调用代码中添加了一个暂停,这看起来确实有效。暂停时间越长,异常的频率就越低。
当然这不是真正的解决方案,所以我正在寻找对此事的一些见解。
编辑:经过进一步检查,这似乎与IIS无关,IIS可以处理多达5000个(每个CPU)的同步线程。我没有接近这个极限。