を呼び出すとserviceHost.Close()
、タイムアウト値serviceHost.Close(TimeSpan.FromMinutes(10))
を設定しても、メッセージの受信が停止している間、1 つまたは 2 つのメッセージが時々失われるようです。
操作の途中でサービスを停止したいが、受信済みの残りのメッセージを処理したい。メッセージがまだ処理されている間にサービスを適切に閉じる方法はありますか?
私はすでに app.config のcloseTimeout
andreceiveTimeout
を 10 分に設定していますが、これも使用していますRequestAdditionalTime(600000)
が、それでもこの問題が発生します。10分で閉まらず、最大1分で閉まります。
私が使用しているバインディングはnetMsmqBindingです。
編集:
プロセスが終了していない場合はループし続けるServiceBase
メソッドに while ステートメントを追加して、問題を一時的に修正しました。OnStop
汚いハックのように思えますが、今のところ機能します。綺麗に終わらせる良い方法があれば教えてください。