掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
タイムラグについて (ID:141715)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
大前提として、こういうときに「Sleep を使ってはいけません」。 Sleep の発動中は、あらゆる処理が完全に停止します。画面の再描画も 行われませんし、マウスやキーボードからの操作も受け付けなくなります。 OS からのメッセージも処理できなくなり、いわゆる「応答なし」の 状態となってしまうため、たとえ短時間であっても、メインスレッドから Thread.Sleep() を呼ぶ事は避けるべきです。 今回の場合、Timer 自体が遅延実行の役目を果たしますから、 そこに Sleep を 加える必要はありません。Timer だけで十分かと。 たとえば、こんな感じですね。 Private X, pn As Integer Sub Form1_Load(… Timer1.Interval = 2000 '2秒間 End Sub Sub Button1_Click(… '乱数をセット Dim R As New Random() X = R.Next(1, 11) '1 以上 11 未満の整数を返す。 ' 画面の初期化 Label1.Text = "" Label2.Text = "" ' 値を入力してもらう Dim pn As Integer Dim S As String = InputBox("1〜10までの数を入力してください") If S = "" Then MessageBox.Show("キャンセルされました。") ElseIf Integer.TryParse(S, pn) = False OrElse (pn < 0) OrElse (pn > 10) Then MessageBox.Show("1〜10までの数しか入力できません") Else ' 1〜10 の数が入力されたら、タイマーを起動 Button1.Enabled = False ' ボタンを使用禁止にして、連続して押されないようにする Label1.Text = pn.ToString() Timer1.Start() ' タイマーを起動(2 秒後に Tick イベントが発生する) End If End Sub Sub Timer1_Tick(… Timer1.Stop() ' タイマーを止める Label2.Text = X.ToString() MessageBox.Show( If(pn = X, "当たり", "残念") ) Button1.Enabled = True ' もう一度できるよう、ボタンを元に戻す End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.