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

标签 c# multithreading console

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

我有一个 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/

相关文章:

c# - 计算两点之间的距离

c# - 将实时共享托管 ASP.NET MVC 站点迁移到 Windows Azure

java - Guava 中的 ListenableFuture 将在哪个线程中调用 FutureCallback?

java - 在多线程程序中没有得到预期的结果

linux - 在 LINUX 上动态运行控制台到 TTY

c# - 自引用计时器/无法收集的对象

c# - LINQ to SQL 关系不更新集合

java - 绑定(bind) StringProperty 时出现多线程错误

java - 像在 Java 中一样在 Delphi Xe2 的控制台中打印

logging - Upstart 控制台输出不起作用