戻り値が来るまで待つのに最適な方法は?


駆け出しPG  2004-02-19 04:12:53  No: 111889

do〜loop内にdoeventsを入れて、処理中にもほかの処理を出来るようにしているのですが、
doeventsでループするのは、PCの時間が遅れたりするなど弊害が発生するとどこかのMLで昔見た記憶がありました。

ループ内でほかのルーチンの戻り値が発生するのを待つのに、doeventsを使わないほかの良い方法をご存知でしたら、
どなたか教えてください。

環境  WinXP Pro /Win2000 VB6全パッチ適用済み


Say  2004-02-19 07:24:02  No: 111890

タイマ監視するとか、メッセージ拾うとか・・・。

ま、たとえば隠しTextBoxを1つ用意して、
「ほかのルーチン」は終了時にそこに何かかきこんで、
終了後の処理をChangeイベントプロシージャに書くとか。


ねろ  2004-02-19 17:02:22  No: 111891

DoEventsを使わないプログラムは私には考えられない。
たとえばあるテキストボックスに8桁のパスワードを
入れなければ次に進まないプログラムの場合
Do
    DoEvents
Loop Until Len(Text1.Text) >= 8
こんなコードになるのですが、これを他の方法でやろうとすると
結構大変です。
やってはいけないのは、たとえばListBoxに大量のデーターを
書き込もうとして
For n = 0 To 10000
    List1.AddItem CStr(n)
    DoEvents
Next
なんてやると一個挿入するたびに、WindowsはListBoxに描画しようとするから
時間が掛かる、こう言うときは
For n = 0 To 10000
    List1.AddItem CStr(n)
    If (n Mod 100) = 0 Then
        DoEvents
    End If
Next
なんてやってDoEventsの回数を100回挿入したら一回行う様なことをします。
要するに'ハサミ'と一緒と言うことですか。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加