※ ChatGPTを利用し、要約された質問です(原文:.NetのBackgroundWorkerクラスについての質問です。)
.NetのBackgroundWorkerクラスについての質問
このQ&Aのポイント
バックグラウンドスレッドを使用するための.NetのBackgroundWorkerクラスについての質問です。
.NetのBackgroundWorkerクラスについて、バックグラウンドスレッドのCPU優先度やフォアグラウンドスレッドとの関係について知りたいです。
バックグラウンドスレッド内でのスレッド制御やフォアグラウンドスレッドへの制御移行について、教えていただけると助かります。
.NetのBackgroundWorkerクラスについての質問です。
.NetのBackgroundWorkerクラスについての質問です。
BackgroundWorkerクラスなるものを知るまでは、Threadクラス等でマルチスレッドを実装していました。
MSDNを読みながら、実装自体は非常に簡単に出来ましたが、このバックグラウンドスレッドとは如何なるものなのでしょうか。
フォアグラウンド/バックグラウンドタスクであるならば、CPU優先度(占有度)により、その実行タイミングが左右されるのは容易に想像できるのですが、バックグラウンドスレッドは、どのようにCPU優先度が決まるのでしょうか。(デスクトップWindowsでは、あまり機会がないかとは思いますが、リアルタイムな処理,クリティカルな処理を同クラスによって実装していいのか判断できませんでした。)
Formクラスから生成されるということは、Formウィンドウのメッセージスレッドをフォアグラウンドスレッドとし、そのバックグラウンドスレッドといった関係になるのでしょうか。(Formウィンドウのアイドル時間にバックグラウンドスレッドが実行されるという理解であっていますでしょうか。)
また、スレッド内でのsleep()呼出しで、スレッドは別スレッドに制御が切り替わるハズだったと思いますが、バックグラウンドスレッド内でThread::Sleep()呼出しをした場合、必ず、フォアグラウンドスレッドに制御が移り、フォアグラウンドスレッドのアイドル時間が発生するまで、バックグラウンドスレッドへ制御が戻ることがないということでしょか。(各スレッドへいつ制御が移るのか分かりませんでした。)
ご回答、または、参考サイト,参考文献等、教えてくださると非常に助かります。
お礼
お礼を申し上げるのが、遅れ申し訳ありませんでした。 今回windowsである程度のリアルタイム性を保持した機構を検討しており、勉強すべき点が多くあり、質問させて頂きました。 とりあえず、本件は、これでクローズとさせて頂きますが、また、お力を借りる時は、よろしくお願い致します。