プロが教える店舗&オフィスのセキュリティ対策術

とある処理を順番どうりに処理させるにはどのような関数を入れるといいのでしょうか?

タイマーで処理させていますが、 勝手に順番が入れ替わってしまうようなんです。


処理A

処理B

処理C

となっています。
がなぜか処理Bが先に行われて、処理Aが行われます

※タイマーは2秒(2000MS)おきに実行し、一定の条件(その条件もタイマーで決定させる)
ちなみに行数はそんなに多くないです。(多分・・・)

以上御願いします。
ちなみに .NET です。

A 回答 (4件)

>なぜか処理Bが先に


VBに限らずですが、コードは上から順番に解釈されていきます。ここで意図しない動きになっているというのは関数云々以前のバグかと思うのですが。

デバックでステップインさせながら1行ずつおっていったらどうなってるんでしょう。
go文か分岐かループかその辺で思いもよらないところに処理が飛んでるだけかと思います。

この回答への補足

デバックでステップインさせながら1行ずつおっていったらどうなってるんでしょう。>
それをするとなぜか(タイマー処理が原因?)アプリケーションの画面を開いても、白くなり 応答なしになってしまいます。


go文か分岐かループ・・・・>
は確かに使用していますが、その部分では使用していません。
このような感じです。

if hen=1 then

処理 A
処理 B
処理 C

endif

またこの部分もタイマーに含まれていますが、自分自身で無効にしています。

time.Enabled = False

補足日時:2003/10/20 21:52
    • good
    • 0

画面の表示などイベント処理に関係するのものは


処理を行っても直ちに画面などに反映されません。
(反映のイベントが処理された時に初めて変わる)
結果、見た目に最後の物しか有効にならないように見えることがあります。

sleep()だけでは、単純に待つだけなのでその間の
イベントを処理してくれないはずです。
DoEventsやRefreshなどが必要な感じがします。

また、確認として、ブレークポイントやStop文(vb6)など
を設定して見ては?
    • good
    • 0
この回答へのお礼

皆様 ご回答ありがとうございました。

お礼日時:2003/11/10 17:54

>アプリケーションの画面を開いても、白くなり


ステップインしている最中にアプリの画面を開くのは無理です。
あと応答なしになるのならその瞬間の行に問題があるのが分かるんじゃないかなと。
他にタイマー処理が問題かと思われるのならその部分をコメントアウトしてみるとか色々試せるかとも思いますが。
    • good
    • 0

プログラムの基本的な動きは命令を記述した順番です。

その流れを変えるのは無条件あるいは条件付きのジャンプ命令等です。

処理フローチャートはちゃんと書いていますか?。デバッグはちゃんとされていますか?。思い通りの処理ステップが踏めないのはやはりどこかに問題があると思います。行数が多い少ないは問題ではないと思います。また、命令の使い方を間違えている場合もあるかも知れません。命令等をもう一度見直し、まずは机上で、そしてマシン上で1行ずつ実行をして処理の動きを調べてみる必要があります。

私も昔はプログラムを組んでいました(アセンブラやC等)が、自分では正しいと思いこんでいても、実際思いがけないところでバグをよく見つけました。

変数の使い方やデータの格納の仕方にも問題はありませんか?。以外と単純なミスが多いものです。地道にファイト!。

この回答への補足

処理フローチャートはちゃんと書いていますか>
簡単ですが書いています。

デバッグはちゃんとされていますか?。
>なぜか 応答なしになってしまいます。

変数の使い方やデータの格納の仕方にも問題はありませんか?。>
多分それは関係ないと思います。

内容は
フォームにあるラベル(25コ)の色を 赤にします。
それだけです。

なおその下に
フォームにあるラベル(25コ)の色を 白にします。
というのもありますが、
Sleep(1000)が数個入っているので、見た目分かると思います。
 ご回答ありがとうございました。

補足日時:2003/10/20 22:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています