[C#]処理ループ内でキー入力を受け付ける

超まとめ

ループ処理しつつ処理をブロックせずにキー入力を受け付けるには、Console.KeyAvailable を使えばOK。

using System;
using System.Threading.Tasks;

namespace KeyInterruptHandling
{
  class Program
  {
    static void Main(string[] args)
    {
      var outChar = "-";

      //処理ループ
      while (true)
      {
        Console.Write(outChar);   //これがメインの処理に該当

        //キー入力チェック。Eが入力されたらプログラム終了。
        if(Console.KeyAvailable){
          outChar = Console.ReadKey().Key.ToString();
          if(outChar == "E"){
            return;
          }
        }

      }
    }
  }
}

Console.KeyAvailable は処理をブロックしないので、それでキー入力のありなしをチェック。
キー入力がある場合はReadKeyして入力されたキーを読み取る…という流れです。

補足

.NET Core 2.0.0で確認しました。

Posted in C#

コメントを残す