2010-11-22 3 views
0

У меня есть приложение, которое мне нужно для автоматизации, когда в определенное время каждый день, скажем, 6 вечера, он будет запускать определенный метод (который должен проверить базу данных для ключевых терминов, а затем получить доступ к api для поиска этих условий). Но есть еще один процесс, который все время обращается к потоку api, поэтому, когда поиск завершен, он прерывает поток и передает новые условия. Теперь я подумал о добавлении файла .exe в планировщик задач Windows, но не уверен, что это сработает. Метод потока работает неограниченно и в 6 вечера каждый день должен выполняться другой процесс. Я думал об использовании system.threading.task TaskFactory, но когда я его включаю, он показывает taskfactory как неопределенный. (У меня есть .NET Framework 4.0) Если запуски с использованием планировщика задач, как 6pm с моей логики кода следующим образом:задачи планирования в vb.net

 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 

ли эта логика имеет смысл? Любые другие идеи>

+0

Если вы используете VS2008, вот почему вы не видите TaskFactory - вам нужно VS2010 для целевого .NET 4. – 2010-11-22 17:43:54

+0

Спасибо, что я забуду о фабрике задач тогда ... но что касается логики программы могу ли я продолжить его – vbNewbie 2010-11-22 17:55:02

ответ

1

Альтернативой может быть использование объекта system.windows.forms.timer.

  1. Поместите объект таймера на форме
  2. Установите «Enabled» свойство истинного
  3. Установите свойство «Интервал» до 24 часов, то есть (24 * 60 * 60 * 1000, поскольку блок миллисекунды)
  4. В событии «tick» объекта Timer установите его для запуска любой функции, которую вы хотите выполнять каждые 24 часа.

сделать что-то то есть, как в следующем, при условии, что ваш объект Timer называется Таймер1:

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick 
    'run your desired function here 
End Sub 

Надежда, что помогает.

EDIT: Ниже приведен пример кода, чтобы сделать эту работу в консольном приложении ...

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. Формы
  2. В вашем модуле вы должны объявить таймер как WithEvents, чтобы ваш модуль получил уведомление о событии «Tick»

Вы можете импортировать system.windows.forms, сначала дважды щелкнув «Мой проект» в проводнике проектов, затем перейдя в «Ссылки», затем щелкнув «Добавить», а затем выбрав вкладку «.Net» и выбрав System.windows.forms. Я надеюсь, что это правильные английские имена, потому что я использую визуальную студию на другом языке.

Смежные вопросы