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