在VB.NET中以特定的秒数执行函数
我正在使用在VB.NET中以特定的秒数执行函数,vb.net,timer,Vb.net,Timer,我正在使用计时器为我的文件制作一个备份计划程序,当所说的时间等于当前时间时,它就会执行,但我的问题是它会一直执行到1秒过去,就像我使用MsgBox时所做的那样 这是我尝试过的,但它不起作用,它仍然执行,直到1秒过去。请帮我做到这一点。谢谢 Dim d As Date = DateTime.Now Dim d1 As Date = d.AddMilliseconds(1) Dim dw As String = d1 & DateTime.Now.DayOfWeek.ToString Dim
计时器
为我的文件制作一个备份计划程序,当所说的时间等于当前时间时,它就会执行,但我的问题是它会一直执行到1秒过去,就像我使用MsgBox
时所做的那样
这是我尝试过的,但它不起作用,它仍然执行,直到1秒过去。请帮我做到这一点。谢谢
Dim d As Date = DateTime.Now
Dim d1 As Date = d.AddMilliseconds(1)
Dim dw As String = d1 & DateTime.Now.DayOfWeek.ToString
Dim date2 As Date = cntrl.Value.AddMilliseconds(1)
If Form3.chkWed.Checked = True Then
If dw = date2 & Form3.chkWed.Text Then
CopyStart(src, dest)
End If
End If
If Form3.chkThu.Checked = True Then
If dw = date2 & Form3.chkThu.Text Then
MsgBox("P")
End If
End If
我添加了另一个
计时器
,并执行了类似的操作
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim dw As String = DateTime.Now & DateTime.Now.DayOfWeek.ToString
If Form3.chkThu.Checked = True Then
If dw = Form3.DateTimePicker1.Value & Form3.chkThu.Text Then
Timer2.Enabled = True
End If
End If
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
Timer2.Enabled = False
MsgBox("P")
End Sub
我所说的是如下所示。在此示例中,有三个
RadioButton
控件,分别指示任务应在下午1:00、下午5:00和晚上9:00启动
Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
'The next task is to start at 1.00 PM
Me.ResetTimerInterval(TimeSpan.FromHours(13))
End Sub
Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged
'The next task is to start at 5.00 PM
Me.ResetTimerInterval(TimeSpan.FromHours(17))
End Sub
Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton3.CheckedChanged
'The next task is to start at 9.00 PM
Me.ResetTimerInterval(TimeSpan.FromHours(21))
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
'The next task will start in 24 hours.
With Me.Timer1
.Stop()
.Interval = Convert.ToInt32(TimeSpan.FromHours(24).TotalMilliseconds)
.Start()
End With
'Start a task right now.
Me.InitiateTask()
End Sub
Private Sub ResetTimerInterval(nextTaskStartTime As TimeSpan)
Dim nextTaskStartDateTime = Date.Today + nextTaskStartTime
If Date.Now > nextTaskStartDateTime Then
nextTaskStartDateTime.AddDays(1)
End If
Dim timeUntilNextTask = nextTaskStartDateTime - Date.Now
With Me.Timer1
.Stop()
.Interval = Convert.ToInt32(timeUntilNextTask.TotalMilliseconds)
.Start()
End With
End Sub
Private Sub InitiateTask()
'...
End Sub
我真的不明白你要什么。你是说任务在指定时间后1秒才开始,你想让它立即开始吗?如果不是,我完全不知道你的意思。任务完全在指定的时间开始,但它一直运行,直到那一秒没有完成,因为它的毫秒,因为我的
DateTimePicker
的值是H:MM:SS
,我计划让它精确地执行,比如说1.5秒,这样它就不会在1秒到2秒之间继续运行。i、 e.任务从1:01:5:
开始,然后它仍在运行,直到1:01:6
,它应该运行一次。那么你是说任务会启动多次,是吗?如果是这种情况,那么它似乎是一个糟糕的实现,因为如果您使用的是计时器,那么当计时器
引发勾选
事件时,您应该只启动任务一次。如果您只想启动任务一次,为什么要每秒多次启动勾号事件?是的,我需要两个计时器s吗?由于我有多个复选框,您能给我一个示例代码吗?计时器应设置其间隔
,以便在下次需要启动任务时引发勾选
事件。无需进行任何检查,因为您知道任务将在出现勾选时启动。当选中或取消选中任何复选框
控件时,可以设置间隔
。此时,您可以计算出距下一个任务的确切时间,并相应地设置间隔。任务完成后,您可以确定下一个任务的执行时间,并再次相应地设置间隔。它就像一个闹钟,这是一个错误问题的解决方案。如果你解决了正确的问题,那么你最终会得到一个更好的解决方案。