以下是代码段
服务器代码:
namespace WcfService3
{
[ServiceContract]
public interface ICalculator
{
[OperationContract]
string GetCount();
}
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class Calculator : ICalculator
{
int count = 0;
public string GetCount()
{
count++;
return "Thread ID : " + Thread.CurrentThread.ManagedThreadId.ToString() + " Counter value : " + count.ToString();
}
}
客户代码
class Program
{
static void Main(string[] args)
{
ICalculator calculator = new ServiceReference2.CalculatorClient();
for (int index = 1; index <= 10; index++)
{
Console.WriteLine(calculator.GetCount());
}
Console.ReadLine();
}
}
如果我将InstanceContextMode设置为InstanceContextMode.Persession或InstanceContextMode.PerCall,我会得到相同的结果。
主题ID:34计数器值:1 线程ID:34计数器值:1 线程ID:34计数器值:1 线程ID:34计数器值:1 线程ID:34计数器值:1 线程ID:34计数器值:1 线程ID:34计数器值:1 线程ID:34计数器值:1 线程ID:34计数器值:1 线程ID:34计数器值:1
使用InstanceContextMode.Single,Counter值增加,这是预期的行为。 线程ID:34计数器值:1 线程ID:34计数器值:2 线程ID:34计数器值:3 线程ID:34计数器值:4 线程ID:34计数器值:5 线程ID:34计数器值:6 线程ID:34计数器值:7 线程ID:34计数器值:8 线程ID:34计数器值:9 主题ID:34计数器值:10
我无法理解为什么计数器的值不随PerCall而增加。有人可以解释一下吗?
阿图尔