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;
}

時々、例外がスローされます。

Async End が間違ったチャネルで呼び出されました。パラメータ名: 結果

常に発生するとは限らないので、この種のパズルは私を困惑させます。IIS が要求に対応できず、問題が発生すると考えていたので、呼び出しコードに一時停止を追加しましたが、これは機能しているようです。一時停止が長ければ長いほど、例外の頻度は低くなります。

もちろん、これは本当の解決策ではないので、この問題についての洞察を探しています。

編集: さらに調べてみると、これは IIS とは無関係のようです。IIS は最大 5000 (CPU あたり) の同時スレッドを処理できます。私はこの限界に近づくことはありません。

4

0 に答える 0