当我拨打serviceHost.Close()
时,即使我设置超时值serviceHost.Close(TimeSpan.FromMinutes(10))
,当它停止接收消息时,我的消息似乎也会不时丢失。
我希望我的服务在操作过程中停止,但处理已收到的其余消息。有没有办法在消息处理时正常关闭服务?
我已经将app.config中的closeTimeout
和receiveTimeout
设置为10分钟,也使用RequestAdditionalTime(600000)
但我仍然遇到此问题。它不会在10分钟内关闭,而是在最多1分钟关闭
我使用的绑定是 netMsmqBinding 。
修改
我通过在ServiceBase
方法OnStop
中添加while语句来暂时解决问题,如果进程没有完成,那么它将继续循环。这似乎是一个肮脏的黑客,但它现在有效。如果有一种更清洁的方式来优雅地结束它,请告诉我。