与this question一样,我遇到了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客户端使服务器会话/实例保持活动状态?有没有办法避免它甚至迫使它关闭?