Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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# WPF客户端保持WCF会话处于活动状态_C#_.net_Wpf_Wcf - Fatal编程技术网

C# WPF客户端保持WCF会话处于活动状态

C# WPF客户端保持WCF会话处于活动状态,c#,.net,wpf,wcf,C#,.net,Wpf,Wcf,在上个月,我在WCF服务方面遇到了一些问题。通过在回调和服务中使用多并发模式,并通过将绑定更改为wsDualHttpBinding,可以解决这个问题 现在我有另一个问题:如果我关闭WPF客户端应用程序,我将无法启动另一个实例。它只是在后台运行,永远不会显示窗口。我必须重新启动服务才能再次启动WPF应用程序,当服务在服务器上运行时,这是不可行的 当应用程序关闭时,我肯定会使用以下代码关闭代理: try { if (_proxy != null

在上个月,我在WCF服务方面遇到了一些问题。通过在回调和服务中使用多并发模式,并通过将绑定更改为wsDualHttpBinding,可以解决这个问题

现在我有另一个问题:如果我关闭WPF客户端应用程序,我将无法启动另一个实例。它只是在后台运行,永远不会显示窗口。我必须重新启动服务才能再次启动WPF应用程序,当服务在服务器上运行时,这是不可行的

当应用程序关闭时,我肯定会使用以下代码关闭代理:

        try
        {
            if (_proxy != null)
            {
                // Calls some server cleanup.
                _proxy.Disconnect();

                _proxy.InnerDuplexChannel.Close();
                _proxy.Close();

                _proxy = null;
            }

            _context.ReleaseServiceInstance();
            _context.Close();
        }
        catch (Exception ex)
        {
            if (_proxy != null)
            {
                _proxy.InnerDuplexChannel.Abort();
                _proxy.Abort();
                _proxy = null;
            }
        }

是什么导致WPF客户端使服务器会话/实例保持活动状态?有没有办法避免它,甚至强制关闭它?

我必须重新启动服务才能再次启动WPF应用程序是什么意思…?您的自托管服务是否在启动时打开WPF应用程序?我希望不会,因为这在很多级别上都是错误的……WCF服务托管在Windows服务中,除非我重新启动它,否则WPF应用程序将挂起。然后我可以启动WPF应用程序。不,服务没有打开WPF应用程序,这太疯狂了。服务实例在哪里声明?你说的是一个名为Client的类的Dispose方法。该类的构造函数声明代理实例,该实例是从添加的服务引用自动生成的类型。