在vb.net中安排任务

时间:2010-11-22 17:39:47

标签: vb.net visual-studio-2008

我有一个应用程序需要自动化,在每天的某个时间,比如说下午6点,它将运行某种方法(检查数据库中的关键术语,然后访问api以搜索这些术语) 。但是还有另一个进程一直在运行访问流API,所以当搜索完成时,它会中断流并移交新术语。 现在我想到将.exe文件添加到Windows任务调度程序但不确定是否可行。 stream方法无限期运行,每天下午6点需要运行另一个进程。我想过使用system.threading.task TaskFactory但是当我包含它时,它将taskfactory显示为undefined。 (我确实有.net框架4.0)如果它使用任务调度程序启动时间为下午6点,我的代码逻辑如下:

        While True
            'should i run this method as background 
            dim gStream as StreamProcess
            gStream.module1()


            If DateTime.Now.TimeOfDay.ToString = searchTime Then
                addKeywordSearchRules = getSTerms.getNewTerms(addKeywordSearchRules)
                ruleManip.ruleChanges(ruleMethods.Method.ADD, addKeywordSearchRules)
            End If

            Dim gSearch As SearchProcess
            if not addKeywordSearchRules.count = 0 then
               gSearch.module1()
            end if 

        End While

这种逻辑有意义吗?任何其他想法>

1 个答案:

答案 0 :(得分:1)

另一种方法是使用system.windows.forms.timer对象。

  1. 将计时器对象放在表单上
  2. 将“已启用”属性设置为True
  3. 将“Interval”属性设置为24hrs,即(24 * 60 * 60 * 1000,因为单位为毫秒)
  4. 在Timer对象的“tick”事件中,将其设置为每24小时运行您想要执行的任何功能。
  5. 假设您的Timer对象名为Timer1:

    ,请执行以下操作
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        'run your desired function here
    End Sub
    

    希望有所帮助。

    编辑:以下是使其在控制台应用程序中运行的示例代码...

    Imports System.Windows.Forms
    Module Module1
        Public WithEvents timer As New System.Windows.Forms.Timer
        Sub Main()
            timer.Enabled = True
            timer.Interval = 500 'replace 500 milliseconds with 24 hours'
            MsgBox("pause")
        End Sub
    
        Private Sub Timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timer.Tick
            'run your desired method here'
        End Sub
    
    End Module
    

    细微差别是:

    1. 您必须明确导入 System.Windows.Forms的
    2. 在您的模块中,您必须这样做 将计时器声明为WithEvents,以便模块收到“Tick”事件的通知
    3. 首先双击项目资源管理器中的“我的项目”,然后转到“参考”,然后单击“添加”,然后选择“.Net”选项卡并选择,可以导入system.windows.forms System.Windows.Forms的。我希望这些是正确的英文名字,因为我使用的是另一种语言的视觉工作室。