【发布时间】:2021-03-11 23:24:27
【问题描述】:
我有一个 C# 控制台应用程序,它可以做一些工作并保持每 4 秒打印一次市场数据。
有没有办法可以在刷新率范围内输入命令来更改某些参数并使应用继续跟随新的输入?
【问题讨论】:
-
Console.ReadLine
标签: c# multithreading input console-application threadpool
我有一个 C# 控制台应用程序,它可以做一些工作并保持每 4 秒打印一次市场数据。
有没有办法可以在刷新率范围内输入命令来更改某些参数并使应用继续跟随新的输入?
【问题讨论】:
Console.ReadLine
标签: c# multithreading input console-application threadpool
是的,你可以。让我们定义 2 个流,一个用于主运行,第二个用于等待新的读取行。使用一个全局变量通过2个流之间的处理来改变,即:
Running(): 从 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();
}
结果:
【讨论】: