保证工作线程继续运行

时间:2019-06-02 11:13:54

标签: c# .net multithreading serial-port

我的程序使用生产者/消费者模式,这意味着我的生产者将任务添加到队列中,并且只要队列中有要执行的任务,我的使用者就在后台执行这些任务。

我的工作线程需要使用一个串行端口,而使用串行端口的标准方法是在程序启动时将其打开,并在需要时保持打开状态(直到关机)。我的程序是一个永远在线的Web服务,通​​常对象的生存期都限定于请求。这两件事在某种程度上彼此矛盾,因此我需要确保在收到请求时,后台线程启动并运行并保持串行端口为打开状态,而不是针对每个请求都打开它,这在大多数情况下可能更自然。因此,我的程序需要高度的自给自足,它需要检测工作线程中的错误并在需要时重新启动它。

是否有一种技术可以确保我的工作线程保持运行状态?我考虑过将整个工作线程的代码包装在try / catch中,并在finally块中向主线程发送事件,以便可以重新启动工作线程。或者,我可以不断向主线程发送“ ping”事件,以使其知道工作线程仍在运行,甚至可以从主线程轮询工作线程。

是否有执行此操作的标准方法?什么是最可靠的方法?请注意,如果工作线程死于或由于某种原因而无法完成其工作很好-我将重新启动线程并继续尝试,但是理想情况下,如果发生这种情况,它应该能够将其任务重新放入队列。

非常感谢C#/ F#/ dotnet(框架)中的示例。

0 个答案:

没有答案
相关问题