複数のクライアントに情報をブロードキャストする 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
クラス終了