好吧,我知道这是糟糕的程序设计,我可能会在稍后修复它,但我正在寻找快速修复...
我有一个 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
语句来检查工作人员完成而不是控制台输入并不是一个真正的选择。
最佳答案
与其这样做,为什么不让你的工作人员注册一个事件,一旦事件被引发,你就可以终止你的循环并退出应用程序。
关于C#:以编程方式为 console.readline 输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4250059/