我有一个Windows服务,只要用户向其发送一些数据,就会调用一些繁重的图像处理。因此,如果有多个数据,则数据排队并按顺序处理。然而,有时处理数据可能会进行折腾,并且处理在那里永远存在。不确定为什么会这样。当发生这种情况时,我希望自己重新启动服务,以便在服务重新启动时从队列中接下来一个服务器。我的问题是在自身内重启服务是个好主意吗?你能做到这一点还是有其他方法可以做到这一点?
萨普纳
答案 0 :(得分:0)
正如Oded在评论中所说,如果服务挂起,它就无法重启。如果你能弄明白为什么它会挂起来并且完全停止挂起它会是最好的,但是假设由于某种原因这是不可能的。
我能想到的两个选项是,如果图像处理是在一个线程中完成的,并且它只是那个挂起的线程,那么你可能会有一个单独的“监视”线程来继续检查是否处理线程仍然很高兴,否则它会杀死它并重新启动它。或者,如果整个服务挂起,您可以使用单独的监视服务来执行检查和重新启动。
答案 1 :(得分:0)
你有三个任务: