スレッドで実行される長時間実行タスクがあります。
WinMain()
このすべてのコードは、エントリ ポイントとは別のクラスで行われますWorkerClass
。
タスクの進行状況に応じてプログレス バーを頻繁に更新したいと考えています。
数時間の調査、試行錯誤の後、いくつかの方法に出会いました。
PostMessage
A)スレッド内からメイン ウィンドウ プロシージャへのカスタム(問題: いくつかのソースから眉をひそめられる: スレッドはメイン UI に触れてはならない)
B) 一部の関数PostMessage
からメイン ウィンドウ プロシージャへのカスタム(問題: スレッド関数はクラスから解放される必要があるため、フリー関数とクラス関数の間でスコープの問題が発生します)WorkerClass
C) ワーカー スレッドがint
ポインターを更新し、次に UI スレッド タイマーが定期的に UI を更新する(問題: 時間を費やす価値があるか、それとも「やり方が間違っている」か)
議論の多くは、私が興味を持っていない MFC や C# に飛び込んでいます。
私は、3 つの方法すべてで障害に遭遇するところまで来ました。1つを理解するのに良い仕事をするのに数時間かかります-私はそれを間違って学ぶ努力をしたくありません.
どちらを追求する必要がありますか?