我是一名新手程序员,我正在使用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()语句会起作用吗?任何帮助将不胜感激。
客户端在PC上,将有来自不同PC的多个客户端。