私は初心者プログラマーで、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 から複数のクライアントが存在します。