C# 基于时间的进程杀死VB.NET

C# 基于时间的进程杀死VB.NET,c#,vb.net,C#,Vb.net,我试图做的是编写一个应用程序,以便在所需的时间(分钟)内终止进程。主要目标是检查流程是否正在运行,是否正在运行;如果没有,要求终止进程;仍然在后台等待并检查它是否正在运行。我自己不是一个程序员,只是下载并尝试编写一个简单的应用程序。所以请原谅我糟糕的编码技巧 这是我的代码,我有一个计时器,一个状态栏和一个按钮。还听说计时器只能处理1分钟,但我不知道如何将它的间隔转换为分钟 Public Class Form1 Private Sub Form1_Load(sender As Object

我试图做的是编写一个应用程序,以便在所需的时间(分钟)内终止进程。主要目标是检查流程是否正在运行,是否正在运行;如果没有,要求终止进程;仍然在后台等待并检查它是否正在运行。我自己不是一个程序员,只是下载并尝试编写一个简单的应用程序。所以请原谅我糟糕的编码技巧

这是我的代码,我有一个计时器,一个状态栏和一个按钮。还听说计时器只能处理1分钟,但我不知道如何将它的间隔转换为分钟

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Timer1.Interval = 1800
        CheckIfRunning()

    End Sub
    Dim p() As Process
    Private Sub CheckIfRunning()
        p = Process.GetProcessesByName("Zoom") 'Process name
        If p.Count > 0 Then
            ' Process is running
            ToolStripStatusLabel1.Text = "ZOOM IS RUNNING"
        Else
            ' Process is not running
            ToolStripStatusLabel1.Text = "ZOOM IS NOT RUNNING"
        End If
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Dim ZOOM() As Process = Process.GetProcessesByName("Zoom")
        Dim ask As MsgBoxResult = MsgBox("30Min limit, Kill Zoom?", MsgBoxStyle.YesNo)
        If ask = MsgBoxResult.Yes Then

            For Each Process As Process In ZOOM
                Process.Kill()
                Timer1.Stop()
                Timer1.Interval = 1800
                Timer1.Start()
            Next
        Else
            Timer1.Stop()
            Timer1.Interval = 1800
            Timer1.Start()
        End If

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Timer1.Start()
    End Sub
End Class

这是一种工作方式,但当30分钟的限制完成时,它会发送相同的消息框。我无法让它正常工作,因此需要一些帮助。

计时器的
间隔值是毫秒数,而不是秒数。所以
1800
1.8
秒,而不是
30
分钟

因为在你的
Timer1_Tick
中,你几乎立即拨打了
MsgBox
,并且你说你收到了垃圾邮件,我认为你可能使用了错误的计时器。确保您正在为Windows窗体应用程序使用Windows窗体计时器


在显示任何UI之前调用
Timer1.Stop()
也是一个好主意,以防止垃圾邮件。

Timer1.Interval=1800
将计时器间隔设置为
1.8
秒。您只在Form.Load上调用了
CheckIfRunning()
,因此没有人知道进程是否在该点之后终止。您应该在Tick处理程序中执行此操作,同时检查30秒周期是否超时:您可能希望比较DateTime对象以验证,在计时器启动时设置时间戳——在没有先暂停计时器的情况下,不要在计时器调用的事件处理程序中显示消息框无需存储
p()