客户端异步调用WCF服务

时间:2012-06-27 20:33:52

标签: c# wcf client-server httpclient wcf-client

  

可能重复:
  Accessing PerSession service simultaneously in WCF using C#

我已经实现了一个c#wcf服务,它有方法s1和方法s2。方法s1是执行处理的主进程,方法s2是一个辅助方法,它根据两个静态int变量(总计,当前)跟踪方法s1状态。

total ----> indicates the total number of tasks.
current-----> indicates the current task that is being processed.

我还创建了3个c#客户端,它们异步调用Web服务。以下提到的是客户方法。

client1: c11,c12
client2: c21,c22
client3: c31,c32

所有这三种客户端方法都可以并行调用服务。所以现在我的问题是2变量total和current是静态变量。当所有三个客户端同时调用服务时,总的和当前值混合在一起而不是为每个客户端分开。

在正常符合条件的情况下,他们应该是这样的:

client1: (total,current)------>(3,1)(3,2)(3,3)
client2: (total,current)------>(2,1)(2,2)
client3: (total,current)------>(4,1)(4,2)(4,3)(4,4)

但现在我的常规情况是我得到的值全部混淆了,因为总变量值不应该为任何客户端改变它应该是相同的。因为这两个变量total和current将在我的wcf应用程序中被访问并且将被修改我在类中将它们设置为静态,以便它们可以被制作为全局并且可以通过类名来访问wcf中我想要的任何地方程序。所以我无法弄清楚如何解决这个问题,任何人都可以帮忙。

1 个答案:

答案 0 :(得分:0)

本质上,服务是每个客户端自己的实例。使用ConcurrencyMode,您可以对此进行调整。

看看这个http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute.concurrencymode.aspx