C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 16 を表示中)
■6195 / )  Re[4]: 画面切替をスムーズにしたい
□投稿者/ とっちゃん (177回)-(2007/08/03(Fri) 21:15:49)
とっちゃん さんの Web サイト
WaitForInputIdle() ですが、こいつは、プロセスのプライマリスレッドのメッセージキューに対して
メッセージ問い合わせAPI(GetMessage API など)が呼ばれたタイミングで、待機状態から復帰します。

.NET アプリでいえば、Application.Run() に到達した時点で、WaitForInputIdle() から帰ってくる
と思っていて差し支えありません(Run() が実際にメッセージループに到達するまでのタイムラグはありますがw)。

なので、画面が表示されたとか、特定のメッセージがキューに入ってきたとかではありません。
#ちなみに、メッセージキューができたでもないのでご注意を


もし、A画面.EXEを修正してというのであれば、Application.Run() に入る前に
あらかた初期化処理を行っておくという段取りにするのがよいです。
#いままでLoadでやっていた表示直前の処理をもっと前のコンストラクタの直後に行うということ

ここまで抜本的な改定はかなり難しいということであれば、メニューEXE側で待機状態の直後に
動きを入れるのではなく、復帰した時点で一度自身のCPU実行時間を明け渡してやる(=Sleep(0)を呼ぶ)でも
だいぶ状況が変わります。

もちろん、れいさんの書いているようにプロセス間通信を行って同期処理を入れるというのもアリです。
が、こちらは、プロセスが表示前に何らかの理由で終わってしまったなどがあった場合に
無限待ちしてしまう可能性があるなど、別のエラーフォローが必要になるので
かなり面倒です。

ま、そのあたりはすでに盛り込まれてるとは思いますけどw

返信 編集キー/


管理者用

- Child Tree -