我是一个新手程序员,我正在使用 c# 编写一个 WCF 项目。在我的服务器端,它接受呼叫并执行一些复杂的过程。但是,我想确保在服务器执行另一个调用之前完成某些进程。为了让我的问题更容易理解,我将在这里做一个类似的过程,但更简单。比如服务器会做一些复杂的计算,然后登录一个网站,发布一个状态,然后退出网站,再做一些计算。我不在乎多个线程(客户端调用)在计算时是否同时运行。但我确实关心 {login,post,logout} 部分何时执行,因为它们都使用相同的凭据登录网站,所以如果多个线程同时尝试登录,网站将拒绝。
[ServiceBehavior(
ConcurrencyMode = ConcurrencyMode.Single,
InstanceContextMode = InstanceContextMode.PerCall)]
public class WCFProject
{
ComplicatedCalculation();
Login();
Post();
Logout();
SomeMoreCalculation();
}
我想确保,如果 Jeff 的客户端调用正在执行 login() post() logout(),所有其他客户端调用将在到达这部分代码时等待,并在 jeff 的调用完成这 3 个方法时继续。然后一次执行一个客户端的这 3 种方法。有没有办法做到这一点?lock() 或 using() 语句会起作用吗?任何帮助将不胜感激。
客户端在电脑上,会有多个来自不同电脑的客户端。