0

重複の可能性:
C# を使用して WCF で同時に PerSession サービスにアクセスする

メソッド s1 とメソッド s2 を持つ ac# wcf サービスを実装しました。メソッド s1 は処理を行うメイン プロセスであり、メソッド s2 は 2 つの静的 int 変数 (合計、現在) に基づいてメソッド s1 の状態を追跡するセカンダリ メソッドです。

total ----> indicates the total number of tasks.
current-----> indicates the current task that is being processed.

Web サービスを非同期的に呼び出す 3 つの c# クライアントも作成しました。以下はクライアントメソッドです。

client1: c11,c12
client2: c21,c22
client3: c31,c32

これら 3 つのクライアント メソッドはすべて、サービスへの呼び出しを並行して行います。だから今私の問題は、合計と現在の2つの変数が静的変数であるためです。3 つのクライアントすべてが同時にサービスを呼び出している場合、合計値と現在の値は、クライアントごとに分かれているのではなく、混同されています。

たとえば、通常の適格なシナリオでは、次のようになるはずです。

client1: (total,current)------>(3,1)(3,2)(3,3)
client2: (total,current)------>(2,1)(2,2)
client3: (total,current)------>(4,1)(4,2)(4,3)(4,4)

しかし今、私の通常のシナリオでは、変数の合計値が同じであると想定されているクライアントに対して変更されることは想定されていないため、値がすべて混同されています。これらの 2 つの変数 total と current は、wcf アプリケーション全体でアクセスされ、変更されるため、それらをクラスで静的に作成して、グローバルとして作成し、wcf で必要な場所でクラス名でアクセスできるようにしました。プログラム。したがって、これを解決する方法がわかりません。誰か助けてください。

4

1 に答える 1

0

基本的に、サービスはクライアントごとの独自のインスタンスです。でConcurrencyMode調整できます。

これを見てください http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.concurrencymode.aspx

于 2012-06-27T20:44:43.870 に答える