У меня есть класс, который наследуется от класса ServiceBase
. О методе OnStop
, я останавливаю ServiceHost
:Остановить все операции приложения до закрытия или остановки ServiceHost
protected override void OnStop()
{
if (this.serviceHost != null)
{
this.serviceHost.Close();
}
}
Дело в том, я хочу, чтобы сообщения обработки закончить приложение из очереди до остановки службы (работает в ConcurrencyMode.Multiple, InstanceContextMode.Single
с MSMQ и WCF). Есть ли способ сделать это? Я пытался сохранить перезапустить службу, а очередь работает, а иногда я теряю данные (возможно, некоторые сообщения были запущены в середине операции, когда он остановлен)
Это не смотреть прямо. Я ожидал, что вы вызовете метод stop для каждой обслуживаемой службы. В сервисе вы реализуете stop, и он устанавливает внутреннее свойство, которое заставляет его завершать обработку, а затем выходит из основного цикла. –