c#5.0の新しい非同期言語機能は、Taskオブジェクトに大きく依存しており、多くの例は、タスクでコードの一部を実行する一般的な方法の1つが、コードをTask.Run()を介して開始することであることを示しています。タスクを実行し、スレッドプールスレッドで実行します。
ただし、スレッドプールスレッドで長時間実行されるコードを開始するべきではないことも読みました。これにより、この質問が発生します。すべてのC#非同期言語機能(Task、'await'、'asyncなど)を引き続き使用できますか? ')「通常の」スレッドでスレッドプールを使用しませんか?この場合、「通常の」スレッドで実行されているコードを表すTaskオブジェクトをどのように取得しますか?
そして、スレッドプールで長時間実行されるコードを実行しないというルールについてのフォローアップの質問として、このルールはCPUを集中的に使用するコードについてのみですか?コードが長時間(たとえば72時間)実行されても、ほとんどの時間を「await Task.Delay()」などの処理に費やしている場合はどうなりますか。スレッドプールスレッドを使用しても問題ありません。または、「通常」を使用する必要があります。並行コードを長時間実行する必要があるすべての場合のスレッド?