私のアプリケーションでは、特定のdllは、使用操作の99.9%で発生しない特定の操作にのみ必要です。したがって、ロード時間とメモリを節約するため、これらは必要に応じてLoadLibrary
を使用して動的にロードされます。ロードDLLブロックUIスレッド
ライブラリに応答しているユーザーに情報を提供し続けると、ライブラリーが正常なスレッドにロードされ、UIスレッドが使用可能になったときに通知され、プロセスを続行できます。
私の実験では、LoadLibrary
が動作している間にUIスレッドがロックされ、イベントキューは処理されていないため、そのアプリケーションがロックされ、画面は再描画されなくなりました。
MSDNのLoadLibrary
この現象は、イベントキューがまだ処理されている間にDLLが1つのスレッドにロードされている可能性がありますか?
の実行を提示していないがありますか? (つまり、デバッガを取り付けてポンピングしていない間にブレークされた場合はどうですか?) –
良いアイデアはチェックすることを忘れた – JProgrammer
これは不要な自己罰です。リンカの/ DELAYLOADオプションを使用します。 –