掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
厳密にアプリケーションの終了状況を把握するには? (ID:84748)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> コードがDelphiであまりなれていないので、 私も、Delphiはわからないです。(^^; # Turbo Pascalなら読めるのですけれども。 > ずっと待ちつづけてしまうのではと思いました。 ここで使われているのは、最初に使っていた「WaitForSingleObject」ではなく、 http://www.microsoft.com/japan/msdn/library/ja/jpdllpro/html/_win32_waitforsingleobject.asp http://yokohama.cool.ne.jp/chokuto/urawaza/api/WaitForSingleObject.html 「MsgWaitForMultipleObjects」という関数となります。 http://yokohama.cool.ne.jp/chokuto/urawaza/api/MsgWaitForMultipleObjects.html http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_msgwaitformultipleobjects.htm MsgWaitForMultipleObjects では、最後の引数に、「待機する入力イベントの種類」を追加で指定することができるのです。 たとえば、QS_PAINTを指定すれば、指定したプロセスが終了した時だけでなく、「画面の再描画が必要な時」にも処理が戻されますので、適宜、DoEvents 等を挟む事で、画面が凍ってしまう事を防ぐ事ができます。 (プロセスが終了して復帰したのか、再描画要求等による割り込みなのかは、関数の戻り値にて判断できます) ………といいつつ、私自身はVB6から MsgWaitForMultipleObjects を呼び出した事が無いので、確信は無いのですけれども。(^_^;) > CreateThreadでスレッドが作成できるということが分かりました。 VB.NETならばともかく、VB6でのマルチスレッドは、現実的には使えません。 以前、某所で K.J.K.さんが書かれていた言葉を引用させていただくと、 》 EXEをNative-Codeコンパイルをする場合: 》 1,シングルスレッド用のモジュールとしてコンパイル/リンクします。 》 よって、無理にマルチスレッド化すると、予期しない動作をする 》 可能性があります。 》 》 スレッド毎の変数の独立 》 VB6は、各スレッド毎に変数領域を作成/利用します。よって、 》 2,共有のグローバル変数は使えません。 》 3,他のスレッドに参照渡しができません。 》 => 参照渡しができない。文字列/配列/オブジェクトが使えない。 》 4,新スレッドからは、Globalなオブジェクトが使えない。 》 => つまり、標準的な関数/オブジェクト等が利用できない。 》 》 と、VBのメリットをほぼ破壊し尽くします。 なのだそうです。どうしてもやりたいなら止めませんが…茨の道ですよ。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.