5

我对 VB.net 完全陌生,我正在尝试运行一个半中间脚本来检查某些文件是否打开。当它第一次打开时,它会检查一个特定的程序,然后它将继续在计时器上检查不同的程序。但是;当我运行代码时,Sub Timer1 从不运行,我将它设置为每 20 秒运行一次。

Imports System.Net
Imports System.Text.RegularExpressions

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        If (Process.GetProcessesByName("PROGRAM1").Length >= 1) Then
            MessageBox.Show("This Client is already running!", "IG Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Environment.Exit(0)
        Else
            Process.Start(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "program.exe"))
            '''' OPEN PROGRAM ABOVE ''''
        End If
        For Each frm As Form In Application.OpenForms
            frm.WindowState = FormWindowState.Minimized
        Next frm
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If (Process.GetProcessesByName("PROGRAM2").Length >= 1) Then 'CHECK FOR PROGRAM
            MessageBox.Show("Program is running!", "IG Error", MessageBoxButtons.OK, MessageBoxIcon.Stop)
            Environment.Exit(0)
            Form3.Show()
        Else
            MessageBox.Show("Program is not running!")
        End If
    End Sub
End Class

以上是我已经拥有的代码.. 我的计时器子要么没有运行,要么不是每 20 秒检查一次。有任何想法吗?

4

1 回答 1

3

定时器的常见错误是:

  1. 您需要使用 timer.enabled 或 timer.start 来启动它。

  2. 您可能需要在刻度处理程序中重置计时器,具体取决于计时器的类型和属性设置。(有定时器控件system.timers.timer和system.threading.timer,每一个都有点不同。)

  3. 您可能需要在刻度处理程序中暂时禁用它,以确保它不会重新进入处理程序并导致问题。

  4. 如果您需要在计时器运行时等待,最好使用 system.threading.thread.sleep 而不是循环。

于 2013-02-25T00:02:35.157 回答