好的,我知道这是糟糕的程序设计,我可能会稍后修复它,但我正在寻找快速解决方案...
我有一个C#程序启动一个做一些工作的线程,然后在主线程中它开始监听用户输入以手动杀死工作者。伪代码如下所示:
WorkerClass worker = new WorkerClass();
worker.Start(); //function that starts a new worker thread.
while(!Console.ReadLine().ToUpper().Equals("STOP")){}
worker.Join(); //function that cleanly stops the worker thread.
这很好用,原来工人总是只是闲逛并不断做东西,所以只等我输入“停止”才有意义。但是,我已经修改了工作线程,以便它最终到达它的任务结束,并且它知道它。由于没有其他事情发生,我希望主线程也停止,但它仍在等待来自控制台的输入。那么,无论如何我可以从主线程中作为控制台输入读取的工作线程输入文本吗?
我确实希望能够干净地手动停止工作人员,因此只需更改while
语句以检查工作人员是否完成而不是控制台输入就不是一种选择。
答案 0 :(得分:4)
为什么不让你的工作人员注册一个事件,一旦事件被提出,你就可以杀掉你的循环并退出应用程序。