VB.NET覚書

VB.NETの覚書
[個人メモ] [仕事メモ] [アイデア] [Ruby]
[TIPS] [対応表] [コメント書き方] [.NET Tips] [VB中学校] [VB.NET の入門サイト] [VB.NET コーディング標準 ] [VBレスキュー] [NonSoft]

2013-11-29

指定した時間停止する

指定した時間停止する

指定した時間だけ現在スレッドを停止するには、Thread.Sleepメソッドを使います

WindowsフォームアプリケーションのメインスレッドUIスレッド)を停止した時は、停止している間、フリーズしたように一切の操作ができなくなります

VB.NET<span class="notice">JavaScript有効にしてください</span>コードを隠すコードを選択

'一秒間(1000ミリ秒)停止する

System.Threading.Thread.Sleep(1000)

指定した時間停止する: .NET Tips: C#, VB.NET

ClsUty.vb

Public Class ClsUty
    ''' <summary>
    ''' 実行ファイルのパスを返す
    ''' </summary>
    Public Shared Function GetAppPath() As String

        Return My.Application.Info.DirectoryPath
        'Return System.IO.Path.GetDirectoryName( _
        '    System.Reflection.Assembly.GetExecutingAssembly().Location)

    End Function
    ''' <summary>
    ''' ファイルが存在するか確認する
    ''' </summary>
    ''' <param name="filename">ファイル名</param>
    Public Shared Function dir(filename)

        If System.IO.File.Exists(filename) Then
            Return True
        Else
            Return False
        End If
    End Function
    ''' <summary>
    '''時間調整コマンド (引数IpAdrにタイムサーバーのIPアドレスかPC名を設定する)
    ''' </summary>
    Public Shared Function Adj_Time(IpAdr As String) As Boolean
        Dim Jug As Boolean
        Dim Ret As String
        Dim P1 As Integer, P2 As Integer, buf As String

        Ret = ExecCommand("net time \\" & IpAdr & " /set /yes")


        If InStr(1, Ret, "コマンドは正常に終了しました。") > 0 Then
            Jug = True

            P1 = InStr(1, Ret, "現在の時刻は") + 7
            P2 = InStr(1, Ret, "です")

            buf = Mid(Ret, P1, P2 - P1)

            MsgBox("このPCの現在時刻を、" & buf & " に合わせました")
        Else
            Jug = False
            MsgBox("このPCの時刻合わせに失敗しました。 " & vbCrLf & vbCrLf & Ret)
        End If

        Adj_Time = Jug

    End Function
    ''' <summary>
    '''DOS コマンドの実行結果を取得する
    ''' </summary>
    Public Shared Function ExecCommand(sCommand As String) As String
        'Processオブジェクトを作成
        Dim p As New System.Diagnostics.Process()
        'ComSpec(cmd.exe)のパスを取得して、FileNameプロパティに指定
        p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
        '出力を読み取れるようにする
        p.StartInfo.UseShellExecute = False
        p.StartInfo.RedirectStandardOutput = True
        p.StartInfo.RedirectStandardInput = False
        'ウィンドウを表示しないようにする
        p.StartInfo.CreateNoWindow = True
        'コマンドラインを指定("/c"は実行後閉じるために必要)
        'p.StartInfo.Arguments = "/c dir c:\ /w"
        p.StartInfo.Arguments = "/c " & sCommand

        '起動
        p.Start()
        waitT(3)
        '出力を読み取る
        Dim results As String = p.StandardOutput.ReadToEnd()

        'プロセス終了まで待機する
        'WaitForExitはReadToEndの後である必要がある
        '(親プロセス、子プロセスでブロック防止のため)
        p.WaitForExit()
        p.Close()

        '出力された結果を表示
        Return (results)


    End Function
    ''' <summary>
    ''' 指定時間プログラムを停止する
    ''' </summary>
    ''' <param name="t">停止時間ms</param>
    Public Shared Sub waitTms(t As Integer)
        System.Threading.Thread.Sleep(t)
    End Sub

    ''' <summary>
    ''' 指定時間プログラムを停止する
    ''' </summary>
    ''' <param name="t">停止時間s</param>
    Public Shared Sub waitT(t As Integer)
        System.Threading.Thread.Sleep(t / 1000)
    End Sub

End Class


トラックバック - http://sub.g.hatena.ne.jp/garyo/20131129