1

を呼び出すとserviceHost.Close()、タイムアウト値serviceHost.Close(TimeSpan.FromMinutes(10))を設定しても、メッセージの受信が停止している間、1 つまたは 2 つのメッセージが時々失われるようです。

操作の途中でサービスを停止したいが、受信済みの残りのメッセージを処理したい。メッセージがまだ処理されている間にサービスを適切に閉じる方法はありますか?

私はすでに app.config のcloseTimeoutandreceiveTimeoutを 10 分に設定していますが、これも使用していますRequestAdditionalTime(600000)が、それでもこの問題が発生します。10分で閉まらず、最大1分で閉まります。

私が使用しているバインディングはnetMsmqBindingです。

編集:

プロセスが終了していない場合はループし続けるServiceBaseメソッドに while ステートメントを追加して、問題を一時的に修正しました。OnStop汚いハックのように思えますが、今のところ機能します。綺麗に終わらせる良い方法があれば教えてください。

4

0 に答える 0