2014-01-10 4 views
0

У меня есть класс, который наследуется от класса ServiceBase. О методе OnStop, я останавливаю ServiceHost:Остановить все операции приложения до закрытия или остановки ServiceHost

protected override void OnStop() 
{ 
    if (this.serviceHost != null) 
    { 
     this.serviceHost.Close(); 
    } 
} 

Дело в том, я хочу, чтобы сообщения обработки закончить приложение из очереди до остановки службы (работает в ConcurrencyMode.Multiple, InstanceContextMode.Single с MSMQ и WCF). Есть ли способ сделать это? Я пытался сохранить перезапустить службу, а очередь работает, а иногда я теряю данные (возможно, некоторые сообщения были запущены в середине операции, когда он остановлен)

+0

Это не смотреть прямо. Я ожидал, что вы вызовете метод stop для каждой обслуживаемой службы. В сервисе вы реализуете stop, и он устанавливает внутреннее свойство, которое заставляет его завершать обработку, а затем выходит из основного цикла. –

ответ