暂停,输入命令并恢复控制台应用程序
Pause, enter a command and resume console app
我有一个 C# 控制台应用程序,它可以执行一些工作并保持每 4 秒打印一次市场数据。
有没有办法能够在刷新率范围内输入命令来更改一些参数并使应用程序继续遵循新的输入?
是的,你可以。让我们定义 2 个流,一个用于 main 运行,第二个用于等待新的读取行。通过2个流程之间的处理,使用一个全局变量来改变,即:
运行(): 从 HyperParam 打印一行然后休眠 4 秒
Task.Run(() => ...):开始无限循环以读取新的 HyperParam。每个循环将休眠 100 毫秒。这意味着用户在 4 秒内至少有 40 次机会更改值。
static string HyperParam = "A";
static void Running()
{
for (int i = 0; i < 100; i++)
{
Console.WriteLine($"Running with: {HyperParam}");
Thread.Sleep(4000);
}
}
static void Main(string[] args)
{
Task.Run(() =>
{
while (true)
{
HyperParam = Console.ReadLine();
Thread.Sleep(100);
}
});
Running();
}
结果:
我有一个 C# 控制台应用程序,它可以执行一些工作并保持每 4 秒打印一次市场数据。
有没有办法能够在刷新率范围内输入命令来更改一些参数并使应用程序继续遵循新的输入?
是的,你可以。让我们定义 2 个流,一个用于 main 运行,第二个用于等待新的读取行。通过2个流程之间的处理,使用一个全局变量来改变,即:
运行(): 从 HyperParam 打印一行然后休眠 4 秒
Task.Run(() => ...):开始无限循环以读取新的 HyperParam。每个循环将休眠 100 毫秒。这意味着用户在 4 秒内至少有 40 次机会更改值。
static string HyperParam = "A"; static void Running() { for (int i = 0; i < 100; i++) { Console.WriteLine($"Running with: {HyperParam}"); Thread.Sleep(4000); } } static void Main(string[] args) { Task.Run(() => { while (true) { HyperParam = Console.ReadLine(); Thread.Sleep(100); } }); Running(); }
结果: