【问题标题】:Pause, enter a command and resume console app暂停,输入命令并恢复控制台应用程序
【发布时间】:2021-03-11 23:24:27
【问题描述】:

我有一个 C# 控制台应用程序,它可以做一些工作并保持每 4 秒打印一次市场数据。

有没有办法可以在刷新率范围内输入命令来更改某些参数并使应用继续跟随新的输入?

【问题讨论】:

  • Console.ReadLine

标签: c# multithreading input console-application threadpool


【解决方案1】:

是的,你可以。让我们定义 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();
      }
    

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多