DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Timerコンポーネントで定期的にイベント発生中に、テキストボックス入力やボタン入力を受付けるには?

環境/言語:[VB.NET]
分類:[.NET]

次のような構成で、Timerコンポーネントで定期的にイベント発生中に、
テキストボックス入力やボタン入力を受付けるにはどうしたら良いでしょうか?
下の処理A〜処理Dの実行中に、他のテキストボックス入力やボタン入力など
を受付ける方法が分からずに困っています。

例えば、処理B中にボタン入力があれば、
処理B後にボタン入力によるイベント(処理X, 処理Y)を実行してから
続けて、処理C、処理Dを行いたいのです。

構成)

Private Sub Timer1_Tick(…略…)
  処理A
  処理B
  処理C
  処理D
End Sub

Private Sub Button1_Click(…略…)
  処理X
  処理Y
End Sub

処理X、処理Yでは、処理A〜処理Dで使うグローバル変数の値を増減させます。

追記:
VS.NET Proの60日評価版使用中で参考書数冊で独学中なので、
「どぼん!」の皆様が頼りです。宜しくお願いします。
> 次のような構成で、Timerコンポーネントで定期的にイベント発生中に、
> テキストボックス入力やボタン入力を受付けるにはどうしたら良いでしょうか?

Application.DoEventsを使えば実現できるでしょう。

しかし、普通は、他のイベントはインターバルの間に受け付けて、
Tickイベントの途中に他のイベントの処理をするということはしません。

イベントの中で割り込みを入れることもないわけではないですが、
何らかの重いループ処理をキャンセルするのにキャンセル用のフラグを
変更したりするという軽い処理を割り込ませる程度です。

> 例えば、処理B中にボタン入力があれば、
> 処理B後にボタン入力によるイベント(処理X, 処理Y)を実行してから
> 続けて、処理C、処理Dを行いたいのです。

蛇足ですが、その処理A〜Dで使うというグローバル変数が、
ボタンをクリックした微妙なタイミングによっていつ変更されたのか?
処理Aの前なのか?、処理Bの前なのか?、・・・・、処理Dの前なのか?、
はっきりせず、非常にデバッグしずらいプログラムになりますので、
プログラムの構造的にお勧めできません。
よねKEN様、アドバイスありがとうございます。

> Application.DoEventsを使えば実現できるでしょう。

『 Application.DoEvents() 』を処理Dの後に1行追加して見たところ、
Application.DoEvents()の行を実行した際に、ボタン入力(処理X〜Y)が
実行できました。

追記:
評価版から ⇒ VB.NET2003購入しました。
皆様、今後とも宜しくお願いします。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板