c#生产者/消费者队列发布

c#生产者/消费者队列发布,c#,producer-consumer,C#,Producer Consumer,我阅读了生产者/消费者队列实现。 它工作得很好,但我担心客户端是否忘记调用Shutdown()。 我应该如何实现工作线程的释放? 谢谢。如果在关闭程序时调用Shutdown(),则可以在创建线程时将其标记为后台线程。这意味着它们将在程序关闭时停止,但并不总是理想的,因为线程可以被强制终止 Thread t = new Thread() t.IsBackground = true; 不,如果应用程序关闭也没问题。问题是应用程序处于活动状态,对队列的引用丢失。本例中的线程保持活动状态。快速查看该代

我阅读了生产者/消费者队列实现。 它工作得很好,但我担心客户端是否忘记调用Shutdown()。 我应该如何实现工作线程的释放? 谢谢。

如果在关闭程序时调用Shutdown(),则可以在创建线程时将其标记为后台线程。这意味着它们将在程序关闭时停止,但并不总是理想的,因为线程可以被强制终止

Thread t = new Thread()
t.IsBackground = true;

不,如果应用程序关闭也没问题。问题是应用程序处于活动状态,对队列的引用丢失。本例中的线程保持活动状态。快速查看该代码,它依赖于向队列中添加null对象来结束线程。如果丢失了对队列的引用,那么即使调用了Shutdown(),也不会有什么区别。建议在工作线程中添加一些检查中止请求的内容,这样您就可以在有队列引用或没有队列引用的情况下调用Thread.abort()。通过快速搜索,应该有大量的信息。