WCF使用服务中的不同数据的双工客户端

问题描述:

我正在尝试编写一个Web服务,用于将流程输出与所有正在监听的客户端进行通信。这是什么似乎是有故障的代码。应用程序应该启动一个进程然后监听输出。还有一种情况,客户端调用StartWebServer并且进程已经在运行,在这种情况下,该函数不应该再次启动该进程,而是将该客户端订阅到接收输出的客户端列表(已损坏)。WCF使用服务中的不同数据的双工客户端

的问题似乎是,在第二个客户端调用StartWebServer时,指定的端口上的进程列表比其他客户的名单不同

此行返回false在第二个电话,由不同的客户端,使用相同的端口作为参数: !Processes.ContainsKey(port)

Dictionary<int, List<IBatchServiceCallback>> Processes = 
     new Dictionary<int, List<IBatchServiceCallback>>(); 

public void StartWebServer(int port) 
{ 
    //Start the webserver (if it's not already running) and listen to the output 

    //Start process if not already running 
    if (!Processes.ContainsKey(port)) // returns false on second call 
    { 
     int pid = catalina("run"); // Start process 
     if (pid < 0) return; 

     Processes.Add(port, new List<IBatchServiceCallback>()); 
    } 

    //Listen to process whether or not I started it 
    ListenTo(port); 
} 

想通了,我只需要变量是静态的:

private static Dictionary<int, List<IBatchServiceCallback>> Processes = 
        new Dictionary<int, List<IBatchServiceCallback>>(); 

和标签:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
public class BatchService : IBatchService