アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#でスレッドの joinはバックグラウンドウォーカーの何に当たるのでそうか?これからはスレッドを使わずにバックグラウンドウォーカーを使うべきなのでしょうか?Threadクラスのメリットが知りたいです。

A 回答 (1件)

> C#でスレッドの joinはバックグラウンドウォーカーの何に当たるのでそうか?


相当するものは存在しません。

> これからはスレッドを使わずにバックグラウンドウォーカーを使うべきなのでしょうか?Threadクラスのメリットが知りたいです。
非同期デリゲートやBackgroundWorkerを利用した場合,スレッドプールが使われます。
このプールが枯渇することを考えないといけないような条件下では,Threadクラスを使います。
他には,STA/MTAの設定が必要な場合などもThreadクラスになります。
が,Threadクラスの機能が本当に必要な場合以外は,非同期デリゲートやBackgroundWorkerクラスで十分です。

UIをスレッドからいじりたい場合は,まず最初にReportProgressの使えるBackgroundWorkerの使用を十分に検討すべきでしょう。
コンポーネントが関係ないなら,まずは非同期デリゲートを検討すべきです。
非同期デリゲートに関しては,.NET Framework 4.0からSystem.Threading.Tasksとか,Parallel Linqといった選択肢も追加されます。


スレッド関係では,MSKKの赤間さんのBlogの一連の記事の,Part. 2にに通常の (Componentでない) スレッドやタイマについての説明があります。
他の記事も選択する上での参考になると思います。
# Part. 2は投稿できなかったそうなので振ってありませんが,「タスクスレッドの起動方法」です。

References:
Blog: とあるコンサルタントのつぶやき : マルチスレッド Windows フォームアプリケーションの開発
http://blogs.msdn.com/nakama/archive/2009/03/30/ …
Blog: とあるコンサルタントのつぶやき : Part 1. Windows フォームのマルチスレッド処理の基礎
http://blogs.msdn.com/nakama/archive/2009/03/31/ …
Blog: とあるコンサルタントのつぶやき : タスクスレッドの起動方法
http://blogs.msdn.com/nakama/archive/2009/04/02/ …
Blog: とあるコンサルタントのつぶやき : Part 3. タスクスレッドと UI の協調動作
http://blogs.msdn.com/nakama/archive/2009/04/07/ …
Blog: とあるコンサルタントのつぶやき : Part 4. Visual Studio によるマルチスレッドアプリの開発
http://blogs.msdn.com/nakama/archive/2009/04/09/ …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!