Vb.net Don';我不知道如何在特定时间运行函数

Vb.net Don';我不知道如何在特定时间运行函数,vb.net,timer,scheduled-tasks,taskscheduler,windows-task-scheduler,Vb.net,Timer,Scheduled Tasks,Taskscheduler,Windows Task Scheduler,我试图了解更多,但遗憾的是,我无法理解它如何与Windows任务调度器一起工作,所以我尝试了一些简单的方法,但仍然不起作用 我希望该功能每天都运行,周末除外。 这是我的密码: Sub automaticworkdayinsert() If Timer4.Interval = 7200000 Then Dim time As Date = Date.Now Dim currhour As Integer Dim currminute As

我试图了解更多,但遗憾的是,我无法理解它如何与Windows任务调度器一起工作,所以我尝试了一些简单的方法,但仍然不起作用

我希望该功能每天都运行,周末除外。

这是我的密码:

Sub automaticworkdayinsert()

    If Timer4.Interval = 7200000 Then
        Dim time As Date = Date.Now
        Dim currhour As Integer
        Dim currminute As Integer
        Dim ReportHour As Integer
        Dim ReportMinute As Integer
        currhour = time.Hour
        currminute = time.Minute
        ReportHour = 15
        ReportMinute = 10
        If currhour = ReportHour AndAlso currminute = ReportMinute Then
            insertAndcheckWorkday(False)
        End If
    End If
End Sub

从代码中包含的内容来判断有点困难(您可能还应该在
insertAndcheckWorkday
函数中包含代码),但是:

我不知道为什么,但我希望小时数是03,但vs会自动将其调到3

看看:

在您的情况下,您可以使用
hh
(12小时格式)或
hh
(24小时格式)

此外,为了比较日期/时间,框架中已经内置了一个方便的功能:

最后一件事,这并不能回答你的问题,但我的强迫症:p只是想帮你一点忙:

Sub automaticworkdayinsert()

    If Timer4.Interval = 7200000 Then

        Dim time As Date = Date.Now

        Dim currhour As Integer = time.Hour
        Dim currminute As Integer = time.Minute
        Dim ReportHour As Integer = 15
        Dim ReportMinute As Integer = 10

        If currhour = ReportHour AndAlso currminute = ReportMinute Then insertAndcheckWorkday(False)

    End If

End Sub

从长远来看,上述更改将使代码更易于阅读,并使用特定值立即初始化变量(可以说,由于整数已初始化为0,这可能有点不现实,但通常认为是良好的编码实践)。另外,如果在
if
之后只发生了一件事,那么也可以将它放在一行上。同样,阅读起来更容易。

通过代码中包含的内容来判断有点困难(您可能还应该在
insertAndcheckWorkday
函数中包含代码),但是:

我不知道为什么,但我希望小时数是03,但vs会自动将其调到3

看看:

在您的情况下,您可以使用
hh
(12小时格式)或
hh
(24小时格式)

此外,为了比较日期/时间,框架中已经内置了一个方便的功能:

最后一件事,这并不能回答你的问题,但我的强迫症:p只是想帮你一点忙:

Sub automaticworkdayinsert()

    If Timer4.Interval = 7200000 Then

        Dim time As Date = Date.Now

        Dim currhour As Integer = time.Hour
        Dim currminute As Integer = time.Minute
        Dim ReportHour As Integer = 15
        Dim ReportMinute As Integer = 10

        If currhour = ReportHour AndAlso currminute = ReportMinute Then insertAndcheckWorkday(False)

    End If

End Sub

从长远来看,上述更改将使代码更易于阅读,并使用特定值立即初始化变量(可以说,由于整数已初始化为0,这可能有点不现实,但通常认为是良好的编码实践)。另外,如果在
if
之后只发生了一件事,那么也可以将它放在一行上。同样,在道路上更容易阅读。

每当
间隔
到期时,
计时器
将引发一个
勾号
事件。显然,要做的事情是计算您感兴趣的时间之前的毫秒数,并将其分配给
间隔。这个计算是你需要研究的。确定当前日期是否为工作日很容易。还有其他方法吗?我会尝试你的建议,但我想有第二个选择。我研究了C#问题,但遗憾的是无法理解其背后的逻辑。你为什么需要第二个选择?你认为第一个选项有什么错?因为我认为使用library更快更好。我不知道为什么,但我希望小时数是03,但vs会自动将其调到3。我希望每天(周末除外)在凌晨3点插入一个工作日。这样,当这些人7:00来的时候,他们就可以开始他们的工作日了。你的代码最终会涉及到数据库吗?如果是,数据库是什么?使用Sql Server,您可以计划作业。
计时器
将在每次
间隔
过期时引发一个
勾选
事件。显然,要做的事情是计算您感兴趣的时间之前的毫秒数,并将其分配给
间隔。这个计算是你需要研究的。确定当前日期是否为工作日很容易。还有其他方法吗?我会尝试你的建议,但我想有第二个选择。我研究了C#问题,但遗憾的是无法理解其背后的逻辑。你为什么需要第二个选择?你认为第一个选项有什么错?因为我认为使用library更快更好。我不知道为什么,但我希望小时数是03,但vs会自动将其调到3。我希望每天(周末除外)在凌晨3点插入一个工作日。这样,当这些人7:00来的时候,他们就可以开始他们的工作日了。你的代码最终会涉及到数据库吗?如果是,数据库是什么?使用Sql Server,您可以安排作业。