- - PR -
何かをするまで待つ処理をしたい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-03-29 19:12
現在、VB 2003 で、ユーザからの入力を待つ処理をしたいと思っています。
イメージとしては、ShowDialog に近いかと思うのですが、 ある特定のボタンを押されたら、特定のボタンを押すまで処理を待機するように したいと思っています。 一応、次のようなイメージで実現はできています。 While Not 入力された? Application.DoEvents() Wend ただ、CPU を使いっぱなしになってしまいます。 つど、10ms ぐらい Sleep するのも一つかとは思うのですが、 いま一つすっきりしません。 ManualResetEvent とか、Mutex を使うようなイメージで、 うまくやる方法などないでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2007-03-29 19:30
次の特定のボタンが押されたら処理を開始すれば良いんじゃない? | ||||
|
投稿日時: 2007-03-29 20:28
さる殿
アドバイスありがとうございます。 ただ、ShowDialog のように、ユーザの入力の結果が、関数として返ってくると、 コードの見通しがよくなるので、そのようにできればと思っております。 よろしくお願いいたします。 | ||||
|
投稿日時: 2007-03-30 08:57
2つめのボタンが押されたイベントを受け取って、そこから処理を続行させれば良いのではないでしょうか?
・・・って何か、そうできない理由があるのでしょうけれど、質問内容からは想像できませんでした。 _________________ R・田中一郎 @ わんくま同盟 - R.Tanaka.Ichiro’s Blog ← ブログはじめました [ メッセージ編集済み 編集者: R・田中一郎 編集日時 2007-03-30 08:58 ] | ||||
|
投稿日時: 2007-03-30 09:46
R田中一郎殿
どうも、アドバイスありがとうございます。 ただ、共通化した class として作りたいと思っていたので、 2つ目のボタンを待ってというイメージだと、個別の Form に ロジックを記述する必要があるので、つらいところでした。 Form の ShowDialog って、あれを .Net framework とか API で、 実装するのって難しんでしょうかね。 | ||||
|
投稿日時: 2007-03-30 09:57
おはようございます。
次の処理まで待つ、ということですが、 ほかの方もおっしゃっていますけど、 次のボタンまで基本的にイベントはおきないんじゃないかな とおもいますです。 なんでそういうことをしなきゃいけないのかの説明があると 回答の方も答えやすいとおもいます。 ところで、入力している間(?)そのコントロール (と、次のボタン)以外を操作無効とかにするような 感じではどーですかね? | ||||
|
投稿日時: 2007-03-30 10:14
kanaiです。
呼び出す側をForm1、呼び出される側(特定のボタンが押されるまで待機するフォーム)をForm2として、次のようなコードはいかがでしょうか。 (Form2にはボタンとテキストボックスを配置)
Form1からForm2のShowDialogを呼び出すと、Form2のテキストボックスの入力内容が戻り値として取得できます。 | ||||
|
投稿日時: 2007-03-30 10:41
動きがいまいちわかりません。
たとえば次の動きはあっていますか? フォームに次の3つのボタンがあり ボタン1−処理1を開始 ボタン2−処理1を一時的に停止 ボタン3−処理1の処理を再開 として、ボタン3をクリックした場合に処理1に対して何らかのメッセージ(返却値)を送り処理を再開する。 この場合 処理1 をクラスとして切り出して、フォームとは別スレッドで動かしてあげればいい気がします。 処理2、処理3があるなら、処理1と同じインターフェイスを実装させれば同じ動きをさせることが出来るはずです。 うーん、はずしているかな。 _________________ かるあ のメモ と スニペット |