1

私は初心者プログラマーで、c# を使用して WCF プロジェクトを作成しています。私のサーバー側では、呼び出しを受け入れ、複雑なプロセスを実行します。ただし、サーバーが別の呼び出しを実行する前に、特定のプロセスが終了していることを確認したいと考えています。私の問題を理解しやすくするために、ここで同様のプロセスをより簡単にします。たとえば、サーバーは複雑な計算を行ってから、Web サイトにログインし、ステータスを投稿し、Web サイトからログアウトして、さらに計算を行います。計算中に複数のスレッド (クライアント呼び出し) が同時に実行されているかどうかは気にしません。しかし、{login,post,logout} 部分がいつ実行されるかは気にします。それらはすべて同じ資格情報を使用して Web サイトにログインするためです。そのため、複数のスレッドが同時にログインしようとすると、Web サイトは拒否されます。

[ServiceBehavior(
ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode = InstanceContextMode.PerCall)]
public class WCFProject
{
    ComplicatedCalculation();

    Login();    
    Post();
    Logout();

    SomeMoreCalculation();
}

ジェフのクライアント呼び出しが login() post() logout() を実行している場合、他のすべてのクライアント呼び出しは、コードのこの部分に到達すると待機し、ジェフの呼び出しがその 3 つのメソッドを終了すると続行することを確認したいと思います。そして、これらの 3 つのメソッドを一度に 1 つのクライアントで実行します。これを達成する方法はありますか?lock() または using() ステートメントは機能しますか? どんな助けでも大歓迎です。

クライアントは PC 上にあり、異なる PC から複数のクライアントが存在します。

4

0 に答える 0