以下是代碼片段PerSession&PerCall被returing相同的值
服務器代碼:
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。單一,計數器值增加,這是預期的行爲。 線程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的增加而增加。任何人都可以解釋嗎?
阿圖爾