まず,いままでの流れの引用。
[hr]あんどーなつ さんが書きました:Windowsでマルチスレッドをするのであれば、下記のものがおすすめです。この掲示板で質問してもすぐ答えが返ってくると思います。
.NET Framework -> BackgroundWorkerクラス
Windows SDK -> CreateThread関数
[hr]hide さんが書きました:オフトピック横からですみませんが、なぜ.NetではBackgroundWorkerを押しているのか理由を聞いてもいいですか?
個人的には多少の何かしらの犠牲があったとしてもasync/awaitを使ったTaskのほうが読みやすくて良いと思ってます。
[hr]あんどーなつ さんが書きました:async/awaitは使ったことがないんです。すみません。
個人的には、ラムダ式のような見た目が初心者向けではないかなと思います。
Threadクラスが一番単純なのですが、fork/joinを思わせる仕組みがなんとなく好きじゃないです。
[hr]YuO さんが書きました:オフトピックラムダ式……?Taskを直接使っている場合にはラムダ式で書くことも多いですが……。あんどーなつ さんが書きました:async/awaitは使ったことがないんです。すみません。
個人的には、ラムダ式のような見た目が初心者向けではないかなと思います。
see) http://dixq.net/forum/blog.php?u=546&b=3452
まぁ,async/awaitはConfigureAwait(false)忘れてUIの資源使ってしまったり,ADO.NETのドライバーが実はasync/await対応していなくてawaitをUIスレッドを止めてしまったり,という罠はありますが……。Threadクラスなんて,COMのApratmentの指定が必要な時以外,.NET 1.0時代から不要です。あんどーなつ さんが書きました:Threadクラスが一番単純なのですが、fork/joinを思わせる仕組みがなんとなく好きじゃないです。
.NET Frameworkでのスレッドの推奨は,.NET 1.0時代より一貫してスレッドプールを利用することです。
あんどーなつ さんが書きました:hide さん
YuO さん
私のコメントについてご指摘ありがとうございます。非常に参考になります。ちなみになんですけれども、非同期処理について下の2つの場合以外の使用例などありましたらご教授いただければ嬉しいです。
・時間のかかる処理(シミュレーション、レンダリング等)のスループットを上げる
・多少時間のかかる処理(ファイルロード、デバイス待ち等)を行うときにGUIが止まらないようにする