0

WCF サービスを呼び出す負荷テスターがあり、呼び出しを並行して実行するかどうかのオプションを使用してビルドしました。並列で実行している場合にのみ、すべてのスレッドで次のエラーが発生します。

これは多かれ少なかれ私のコードです:

            if (runMultiThreaded)
            {
                ParallelOptions options = new ParallelOptions();
                options.MaxDegreeOfParallelism = System.Environment.ProcessorCount;
                ParallelLoopResult loopResult = Parallel.For(0, numberOfTimesToTest, options,
                    (i, loopState) =>
                    {
                        myService.MyOperation();
                        if (loopState.ShouldExitCurrentIteration) return;
                    });
            }
            else
            {
                for (int i = 0; i < test1NumberOfRuns; i++)
                {
                        myService.MyOperation();
                }
            }

何か案は?詳細が必要な場合はお知らせください。

更新: myService は、CreateChannel メソッドを使用して ChannelFactory で作成された、サービスの操作コントラクト インターフェイスのインスタンスです。

ありがとう!

4

1 に答える 1

2

あなたmyServiceClientBase<T>サブクラスまたはChannelFactory<T>::CreateChannel?を介して明示的に作成されたチャネルであると想定しています。その場合、それらのインスタンスはスレッドセーフであることが保証されていないため、ワーカースレッドごとにインスタンスが必要です。

于 2012-11-16T04:36:26.957 に答える