我想做一個簡單的Windows服務,維護一個整數隊列並通過WCF調用接受來自其他應用程序的新整數。我目前的實現似乎爲每個與它通信的應用程序保持單獨的隊列,這不是我想要的。WCF服務託管Windows服務在調用之間不保存狀態
我從微軟的指示開始,在How to: Host a WCF Service in a Managed Windows Service上。
我WindowsService類看起來是這樣的:
public class MyWindowsService : ServiceBase{
public ServiceHost serviceHost = null;
public MyWindowsService(){
ServiceName = "AdHocReportService";
}
public static void Main(){
ServiceBase.Run(new MyWindowsService());
}
protected override void OnStart(string[] args){
if (serviceHost != null)
serviceHost.Close();
serviceHost = new ServiceHost(typeof(MyService));
serviceHost.Open();
}
protected override void OnStop(){
if (serviceHost != null){
serviceHost.Close();
serviceHost = null;
}
}
}
在我的服務類我有一個隊列和一個Add方法。 add方法在添加之後返回隊列中的項目數。代碼如下所示:
public class MyService : IMyService
{
private Queue<int> myQueue= new Queue<int>();
public int Add(int reportId)
{
myQueue.Enqueue(reportId);
return myQueue.Count;
}
}
最後,我在ConsoleApp用下面的代碼測試我的服務:
MyServiceClient client = new MyServiceClient();
int count = client.Add(10);
Console.WriteLine(count); //prints 1
count = client.Add(25);
Console.WriteLine(count); //prints 2
Console.ReadLine();
我希望它可以打印1和2的第一次我的測試運行,然後第二次3和4,然後5和6第三次,依此類推。但是,它每次只返回1和2,就好像控制檯應用程序正在實例化對象本身並且不在Windows服務中的對象上操作一樣。我不瞭解什麼?