我有一个托管 WCF 服务的 Windows 服务,该服务向多个客户端广播信息。我想从客户端优雅地处理服务关闭,即检测到服务已经消失或想要关闭,弹出一条消息并关闭应用程序。目前,如果我在关闭行关闭服务,我会得到以下信息。
“ServiceHost 关闭操作在 00:00:09.9910000 之后超时。这可能是因为客户端未能在所需时间内关闭会话通道。”
问题:如何检测关闭请求并关闭客户端?
在客户端上关闭服务后,我得到“发生套接字异常,现有连接被远程主机强行关闭”
这是关闭代码。
If Not (_LivePricingHost Is Nothing) Then
_LivePricingHost.Close()
_LivePricingHost = Nothing
End If
这是我用来设置双工会话的类,我删除了样板处理代码和我向客户端提出的事件。
Imports System.ServiceModel
Public Class NotificationCallback
' Implements LivePricingService.IMessageCallback
Implements IDisposable
Private _ns As LivePricingService.MessageClient
Public Sub New()
Dim context = New InstanceContext(Me)
_ns = New LivePricingService.MessageClient(context)
_ns.SubscribeForBroadcast()
' _ns.AddMessage("PING")
End Sub
#End Region
结束类