私は、次のニーズを書くために、コンソールを得るためにブロックされる理由を知りたい:C#Task.Factory.StartNew Longrunning
Task.Factory.StartNew(() => Console.WriteLine("KO"), TaskCreationOptions.LongRunning);
、これはそうではない:
new Thread(() => Console.WriteLine("KO")).Start();
C#5.0によると、は、タスクがプールスレッド(バックグラウンドスレッド)を使用しないようになっています。すなわち、通常のスレッドと同様にフォアグラウンドスレッドを使用する必要があります。 Console.Readline
またはにする必要がありますしかし、Task
で、それは長時間走っているかどうかは関係ありません、私はいつもメインスレッドを何らかの方法でブロックする必要があります。
だから、良いはLongRunning
またはOnComplete()
またはGetAwaiter()
またはGetResult()
または私は常に自分自身が実際に結果を得るために、メインスレッドをブロックする必要がある場合は、結果をレンダリングすることになっている他の機能は何ですか?
*フォアグラウンドスレッドを使用する必要があることを意味する* [いいえ、それは必要ありません。](https://referencesource.microsoft.com/#mscorlib/system/threading/Tasks/ThreadPoolTaskScheduler.cs,61) – PetSerAl