【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

VB.net(2005)でFormのLoadイベント処理について質問です


設定時刻として9:00とします。
formを起動した時刻が9時前ならまで何もせず。
9時以降になれば処理を開始する。

といったプログラムを作成しようと思います。

サンプル)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim settingtime As DateTime
'現在時刻を設定
Dim nowtime As DateTime = System.DateTime.Now.ToShortTimeString
'設定時間を9時
settingtime DateTime = DateTime.Parse("9:00").ToShortTimeString
'現在時刻が9時より後のとき
If nowtime < setting Then
        処理A
Else
'現在時刻が9時より前のとき
        9時まで処理Aをしない(9時になれば処理Aを開始)
End If
End Sub


上記のようにコーティングしましたが、
呼び出した時が9時以降なら処理Aをして以前ならElseの処理を行い抜けてしまいます。
9時になれば処理をAをしたいのです。
formを呼び出しにTimerのTickイベントで9時になれば処理Aを開始?

なにかいい案があればよろしくお願いします。

A 回答 (2件)

お世話になります。


Form1 に Timer コントロールを貼り付けます。
以下のコードでどうでしょうか。

Public Class Form1

  ''' <summary>
  ''' 処理 A を実行する時間
  ''' </summary>
  ''' <remarks></remarks>
  Private m_startDatetime As DateTime = DateTime.MinValue

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    ' 処理 A を実行する時間を設定(Application 実行した日の 9 時)
    Me.m_startDatetime = New DateTime(DateTime.Today.Year, DateTime.Today.Month, DateTime.Today.Day, 9, 0, 0)
    Me.Timer1.Enabled = True
    Me.Timer1.Start()

  End Sub

  Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick

    If DateTime.Now.ToString("yyyyMMddHHmmss") >= Me.m_startDatetime.ToString("yyyyMMddHHmmss") Then
      ' 指定した時刻以降の時刻になったら

      ' Timer を止める
      Me.Timer1.Stop()
      Me.Timer1.Enabled = False

      ' 処理 A 実行
      Me.A()
    End If

  End Sub

  ' 処理 A
  Private Sub A()
    MessageBox.Show("A")
  End Sub

End Class
    • good
    • 0

DoかWhileを使って9時を過ぎるまで無限ループで待っていて、無限ループを抜け出したら処理Aを行なうようにすれば良いのでは。



無限ループの中ではSleepで待ち時間とDoEventsを実行して、他のプログラムに実行が渡せるように工夫をしておいた方が良いですが。
    • good
    • 0

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


おすすめ情報