Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何等待WCF释放端口?_C#_Wcf - Fatal编程技术网

C# 如何等待WCF释放端口?

C# 如何等待WCF释放端口?,c#,wcf,C#,Wcf,我有一个windows服务,它使用WCF与gui通信。不幸的是,当我想从gui重新启动服务(以重新加载配置)时,我收到以下消息: IP端点0.0.0.0:1111上已存在侦听器 我正在使用暂停代码重新启动服务: if (sc.Status == ServiceControllerStatus.Running) { sc.Stop(); sc.WaitForStatus(ServiceControllerStatus.

我有一个windows服务,它使用WCF与gui通信。不幸的是,当我想从gui重新启动服务(以重新加载配置)时,我收到以下消息:

IP端点0.0.0.0:1111上已存在侦听器

我正在使用暂停代码重新启动服务:

        if (sc.Status == ServiceControllerStatus.Running)
        {
            sc.Stop();
            sc.WaitForStatus(ServiceControllerStatus.Stopped);
            sc.Start();
        }

问题是服务控制器的状态已为“已停止”,WCF仍然没有释放端口。我怎么能等到这一切发生呢?

我一直在为同样的问题苦苦挣扎。在OnStop方法中,我调用ServiceHost的Close()方法,然后将服务主机本身设置为null


到目前为止,仅仅这样做就解决了这个问题。。。到目前为止。

端口是否及时保留?这是一个tcp连接,因此答案可能是肯定的。端口没有被阻塞很长时间-只需几秒钟,我就可以再次运行该服务)。您在OnStop方法中做了什么?请显示代码。没什么-只是写入事件日志。整个WCF宿主部件被放置在另一个类中,并实现了IDisposable。我一直默默地希望ServiceHost将由垃圾收集器收集(在GC中执行close()方法之后)。显式运行Dispose()没有任何区别。您可能刚刚回答了您的问题。无论在OnStart中执行什么操作,都需要在OnStop中撤消。