3

このページhttp://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspxは、スレッドセクションで、非同期メソッドが他のスレッドで実行されないことを示しています。他のスレッドを使用する場合は、 、Task.Runを使用します。

したがって、非同期とスレッド化は2つの異なるものであり、それぞれのオプションは状況によっては適切であることを理解しています。いつ非同期を使用するのが良いのか、いつスレッドを使用するのが良いのか知りたいです。

ありがとう。

4

1 に答える 1

3

常に作業を行う場合は、スレッドを使用します。カスタム作成されたプールを直接使用します。それでも、カスタムタスクスケジューラの背後に(独自のスレッドプールを使用して)非表示にすることができます。

低レベルのスレッドパラメータを制御する必要がない場合、スレッドにはいくつかの利点があります。これは非常にまれです。優先度の設定のような雑学は、非同期でも実行できることです(設定を戻すことを忘れないでください)が、相互運用のためにかなりのことを設定する必要がある場合があります。

それでも、最近のスレッドは非常に低レベルのAPIです-タスクはカスタムスケジューラを使用しているため、カスタムタスクスケジューラの外部のスレッド(低レベルAPIとして内部でカスタムメイドのスレッドのスレッドプールを使用する場合があります)はほとんど使用されません。

スレッドは、LONGTERMのスレッドを再割り当てするときにも役立ちます。長期は必ずしも「計算集約的」ではありません。ここには、カスタムスレッドで24時間ループで実行されるAPIがあります。スレッドを開始し、「プロセスデータ」メソッドを呼び出して呼び出します。メソッドは、問題/エラー時に、または1日に1回戻ります(次のリアルタイムデータブロックのためにすぐに再起動されます)。明らかに、ノンストップで忙しいので、これはスレッドにとって良いケースであり、タスクではありません。タスクのすべての高度な機能は役に立たないからです。

他のほとんどすべてのために最近私はタスク/非同期を使用します。

于 2012-12-09T19:21:54.353 に答える