今まで経験したことのない問題に直面しています。次のように、いくつかのタイミング機能用の追加のラッパーを使用して、BeginXXX/EndXX パターンを介してメソッドを非同期的に呼び出しています。
BeginGetStuffTimed(arguments)
{
var timingstuff = TimingStuff;
var callback = new AsyncResult(CallbackMethod);
service.BeginGetStuff(CallbackMethod, timingstuff);
}
CallbackMethodTimed(IAsyncResult result)
{
SaveTiming(result.AsyncState...);
service.EndGetStuff;
}
時々、例外がスローされます。
Async End が間違ったチャネルで呼び出されました。パラメータ名: 結果
常に発生するとは限らないので、この種のパズルは私を困惑させます。IIS が要求に対応できず、問題が発生すると考えていたので、呼び出しコードに一時停止を追加しましたが、これは機能しているようです。一時停止が長ければ長いほど、例外の頻度は低くなります。
もちろん、これは本当の解決策ではないので、この問題についての洞察を探しています。
編集: さらに調べてみると、これは IIS とは無関係のようです。IIS は最大 5000 (CPU あたり) の同時スレッドを処理できます。私はこの限界に近づくことはありません。