关于多线程:C#:以编程方式为 console.readline 输入文本

C#: programmatically enter text for console.readline

好吧,我知道这是一个糟糕的程序设计,我可能会在稍后解决它,但我正在寻找一个快速修复...

我有一个 C# 程序,它启动一个执行某些工作的线程,然后在主线程中它开始侦听用户输入以手动终止工作人员。伪代码如下所示:

1
2
3
4
5
6
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 语句以检查工作程序完成而不是控制台输入并不是一个真正的选择。


与其这样做,不如让您的工作人员注册一个事件,一旦引发事件,您就可以终止循环并退出应用程序。