次のコードを使用して新しいコンソールアプリを起動します-
class Program
{
static void Main(string[] args)
{
while (true)
{
Task<string> readLineTask = Console.In.ReadLineAsync();
Debug.WriteLine("hi");
}
}
}
Console.In.ReadLineAsyncはブロックされており、コンソールに行が入力されるまで戻りません。そのため、「Hi」がコンソールに書き込まれることはありません。
Console.In.ReadLineAsyncでawaitを使用するとブロックされます。
新しい非同期CTPメソッドがブロックしないことは私の理解でした。
これの理由は何ですか?
これが別の例です
static void Main(string[] args)
{
Task delayTask = Task.Delay(50000);
Debug.WriteLine("hi");
}
これは私が期待するように動作し、Task.Delayがブロックしないため、次の行に直接進み、「hi」を出力します。