0

可能重复:
使用 C# 在 WCF 中同时访问 PerSession 服务

我已经实现了具有方法 s1 和方法 s2 的 ac# wcf 服务。方法 s1 是执行处理的主要过程,方法 s2 是辅助方法,它基于两个静态 int 变量(总计、当前)跟踪方法 s1 的状态。

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

我还创建了 3 个异步调用 Web 服务的 c# 客户端。下面提到的这些是客户端方法。

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

所有这 3 个客户端方法都并行调用服务。所以现在我的问题是 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 中的任何位置通过类名访问程序。所以我无法弄清楚如何解决这个问题,任何人都可以帮忙。

4

1 回答 1

0

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

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

于 2012-06-27T20:44:43.870 回答