我已将我的服务行为声明为单个实例模式,如下所述
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class Service : IService
{
[OperationBehavior]
public void DoSomething()
{
...
}
}
我想从客户端知道 dosomething()的执行状态,以确保在运行时,client请求不得致电 dosomething()。请帮助我找到解决方案?
你不能。
如果您实际上只有一个实例,则您可以有第二种方法,可以使您处于状态。但这是一个异步系统,如果您询问它是否忙,您会得到一个答案...在下一个电话中,它可能已经有所不同。您可以从您的方法返回bool,如果您发现它已经在运行,则可以使您的方法立即返回false。或者,您可以使方法等待以获取所有其他呼叫以完成的呼叫,然后继续进行当前呼叫。或者,您可以只有该消息 queue 工作,并让另一项服务不断地对所有排队项目不断地工作。
重点是,您需要在这里进行策略,您需要做出决定。一旦您完成了它并实施了它,并且您有一个特定的问题,请自由来这里,再次问A 特定问题。