0

我已将我的服务行为声明为单实例模式,如下所述

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class Service : IService
{
  [OperationBehavior]
        public void DoSomething()
        {
          ...
        }
}

我想从客户端知道DoSomething()的执行状态,确保在它运行时,没有客户端请求应该调用DoSomething()。请帮我找到解决方案?

4

1 回答 1

0

你不能。

如果你实际上只有一个实例,你可以有第二种方法,它给你一个状态。但这是一个异步系统,如果你问它是否忙,你会得到一个答案......在你的下一次通话中,它可能已经不同了。如果您发现它已经在运行,您可以从您的方法中返回一个 bool 并让您的方法立即返回 false。或者您可以让您的方法等待所有其他调用完成,然后继续当前调用。或者,您可以让该消息将工作排队,并让另一项服务一个接一个地连续处理所有排队的项目。

关键是,你需要一个策略,你需要做出这个决定。一旦你完成并实施了它并且你遇到了一个特定的问题,请随时来这里再次询问一个特定的问题。

于 2017-12-01T09:28:45.573 回答