ちょっとした質問があります。
.Net 4.5 より前はマルチスレッドをあまり使用していなかったことを認めますが、新しいasync/await
機能を試してみることにしました。私はそれを試し始めましたが、すべてうまくいっているように見えますが、ウェブ上のどこにも「問題」の解決策を見つけることができませんでした.
await
.Net プラットフォームの新しく変換されたメソッド (例: など) で を使用する方法をWriteAsync()
誰もが説明してReadAsync()
いますが、それを自分のメソッドに使用したい場合はどうすればよいでしょうか? たとえば、非常にコストのかかる計算を実行していて、4 つのコアすべてをその計算に使用したいとします。私はこれに似たものを持っています:
async Task DoLotsOfWork<T>(T[] data, int start, int end)
{
//Do very expensive work
}
しかし、await
そこにはキーワードがないため、メソッドは同期メソッドとして扱われます。ユーザーにわかりやすいものを表示しながら、すべてのコアで実行できるように、外部から 4 回呼び出したいと思います (「お待ちください...」など)。私が理解できた唯一の解決策await Task.Yield();
は、メソッドの先頭に a を追加することでした。このようなもの:
async Task DoLotsOfWork<T>(T[] data, int start, int end)
{
await Task.Yield();
//Do very expensive work
}
その場合、メソッドは期待どおりに動作します。しかし、これに対するより良い解決策はありますか? そのコード行を正確に書くよりも簡単で賢明なはずだと思います。Task/Thread
オブジェクトを作成してメソッドを呼び出すことができることは理解していますStart()
が、それにはさらに多くの作業が必要です。新しい async/await 機能を使えば、この種のことは簡単になると思いました。