WCF Duplex客户端,具有来自服务的不同数据

时间:2014-01-15 17:09:07

标签: c# wcf web-services webservice-client duplex

我正在尝试编写一个Web服务,将进程的输出传递给所有侦听客户端。这似乎是故障代码。应用程序应该启动一个进程然后监听输出。还有一种情况,客户端调用StartWebServer并且该进程已在运行,在这种情况下,该函数不应再次启动该进程,而是将该客户端订阅到接收输出(已损坏)的客户端列表。 / p>

问题似乎是当第二个客户端对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);
}

1 个答案:

答案 0 :(得分:0)

想出来,我只需要变量是静态的:

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

和标签:

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