1

当我打电话时serviceHost.Close(),即使我设置了超时值serviceHost.Close(TimeSpan.FromMinutes(10)),虽然它停止接收消息,但我的一两条消息似乎不时丢失。

我希望我的服务在操作过程中停止,但处理已收到的其余消息。有没有办法在消息仍在处理时优雅地关闭服务?

我已经将 app.config 中的closeTimeoutand设置receiveTimeout为 10 分钟,也可以使用,RequestAdditionalTime(600000)但我仍然遇到这个问题。它不会在 10 分钟内关闭,而是最多 1 分钟。

我使用的绑定是netMsmqBinding

编辑:

ServiceBase我通过在方法中添加一个while语句暂时解决了这个问题OnStop,如果该过程没有完成,那么它将继续循环。这似乎是一个肮脏的黑客,但它现在有效。让我知道是否有更简洁的方式来优雅地结束它。

4

0 回答 0