1

我遇到了一个问题,我以前没有遇到过。我通过 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)线程。我没有接近这个极限。

4

0 回答 0