C# 控制台应用程序,中断 readline(),线程循环?



所以我在控制台应用程序中有一个呈现菜单并等待用户输入的方法:

public void RenderMainMenu()
{
Console.WriteLine("Pick one option:");
Console.WriteLine("[1] Option1");
Console.WriteLine("[2] Option2");
var userInput = Console.ReadLine();
// ... other code of what do to with user input
}

我还有一个在应用程序开始时创建的类,这个类负责在应用程序运行时始终在后台循环列表:

class CheckList
{
Thread t;
List<DateTime> list;
public CheckList()
{
list = new List<DateTime> { DateTime.Now.AddMinutes(5), DateTime.Now.AddMinutes(1) };
t = new Thread(new ThreadStart(LoopList));
t.Start();
}
private void LoopList()
{
foreach (DateTime d in list)
{
if (d >= DateTime.Now)
{
// Get out of main menu and display a new menu now.
}
}
}
}

我如何实现这一点?

甚至有可能在 Console.App 上达到这样的结果吗?我的意思是: 随时为您提供一种类型的菜单(menu1、menu2、menu3),并在导航和做事时为其获取用户输入,但是一旦时间到来 - 一些菜单弹出并且此用户输入转到弹出的新菜单......?

我认为您正在主方法中调用另一个线程。除非您共享一些代码,否则不清楚,然后我们可以理解您想说什么。您能否分享您的源代码,以便我们为您提供帮助?

public class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please enter any value");
string str = Console.ReadLine();
ThreadStart childref = new ThreadStart(CallToChildThread);
Thread childThread = new Thread(childref);
childThread.Start();
Console.ReadLine();
}
public static void CallToChildThread()
{
Console.WriteLine("Child thread starts");
// the thread is paused for 5000 milliseconds
int sleepfor = 5000;
Console.WriteLine("Child Thread Paused for {0} seconds", sleepfor / 1000);
Thread.Sleep(sleepfor);
Console.WriteLine("Child thread resumes");
}
}

最新更新