投稿日 | : 2004/05/21(Fri) 18:04 |
投稿者 | : るしぇ |
Eメール | : |
URL | : |
タイトル | : Re^5: イベント処理中に違うイベントの処理を行う方法 |
> 「タイマーイベントは約65秒が最長なので、永久にループする」
> といった旨のご指摘を誤って理解して
> 例えばIntervalに10秒を設定していて、
> Timerイベントハンドラ関数の処理が
> 10秒を超えるようなことがある場合、
> VBでは恐ろしいような事象が発生するのかな〜なんて
> 思ってしまいました。(・_・;)
イベントはスタックされますので…そのうちスタック領域の不足で
落ちるんじゃないかと…。
今回の問題も最初の書き込みで
>1時間後にやっとボタンクリックイベントのループから抜けて、
>イベントの処理が終了した瞬間に
>タイマーイベントの処理に制御が移ります。
>※とっくに5分以上過ぎているのでタイマーイベントの
> ループ処理はすぐに終了します。
という結果になりましたが、これは1つの関数(この場合ボタンクリックイベントの関数)
の処理中は他のイベント(関数)の処理は後回しにされるから
いくら DoEvents しても意味が無い…ってことになってると思います。
一度ヘルプで↓この辺読んでみたらどうでしょう?
[Visual Studio 6.0 ドキュメント]
└[Visual Basic ドキュメント]
└[Visual Basic の使用方法]
└[プログラミング ガイド]
└[Visual Basic を使ってできること]
└[オブジェクト]
└[クラスのイベントの追加]
└[オブジェクトのイベントの処理]☆
└[コンポーネント ツール ガイド]
└[ActiveX コンポーネントの作成方法]
└[コード コンポーネントの作成技術]
└[非同期コールバックとイベント]
└[イベントによる通知とコールバックによる通知]☆
そのものズバリを書いてるわけじゃないんですがなんとなく感じは
つかめるかと…
考えてみればイベントも1つの関数です。1つの関数の処理中に
他の関数の処理を許すと面倒なことになるでしょ?
ですから、イベントに限らず…ですが、処理中の関数を抜けることが
大事なんです。その辺りを意識して設計すればいいんじゃないでしょうか?