2010-11-22 3 views
0

나는 특정 시간 (예 : 오후 6시)에 특정 방법 (데이터베이스를 핵심 용어로 확인한 다음 API에 액세스)을 실행하는 자동화해야하는 응용 프로그램이 있습니다. 이 용어들을 검색하기 위해). 그러나 스트림 API에 항상 액세스하는 다른 프로세스가 있으므로 검색이 완료되면 스트림을 중단하고 새 용어를 넘겨줍니다. 이제 Windows 작업 스케줄러에 .exe 파일을 추가 할 생각 이었지만 작동하는지 확실하지 않았습니다. 스트림 메소드는 무한정 실행되며 매일 오후 6시에 다른 프로세스를 실행해야합니다. 나는 system.threading.task TaskFactory를 사용하는 것을 생각했다. 그러나 그것을 포함 시켰을 때, taskfactory는 정의되지 않은 것으로 보여준다.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 

이 논리 메이크업 감각을합니까 : 다음과 같이 내 코드 로직 오후 6시 등의 작업 스케줄러를 사용하여 발사하는 경우 (I 닷넷 프레임 워크 4.0이 있습니까)? 다른 아이디어>

+0

VS2008을 사용하는 경우 TaskFactory가 표시되지 않는 이유입니다. VS2010이 .NET 4를 대상으로해야합니다. –

+0

감사합니다. 그렇다면 작업 공장을 잊어 버릴 것입니다.하지만 프로그램 논리와 관련이 있습니다 그걸로 진행해도 되겠습니까? – vbNewbie

답변

1

다른 대안은 system.windows.forms.timer 개체를 사용하는 것입니다.

  1. 장소, 즉 24 시간에 "간격"속성을 True로 설정
  2. 에 "사용"속성을 설정 양식
  3. 에 타이머 객체는 (24 단위는 * 1000 60 * 60입니다 * 때문에 밀리 초)
  4. Timer 개체의 "tick"이벤트에서 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 

희망을.

편집 :

  1. 명시 적 System.Windows을 가져올 수있다 : 다음은

    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 
    

    마이너 차이점은 ... 콘솔 응용 프로그램에서이 작업을하는 샘플 코드입니다. 양식

  2. 모듈 내에서 은 WithEvents로 타이머를 선언해야 모듈에 "Tick"이벤트가 통지됩니다.

프로젝트 탐색기에서 "내 프로젝트"를 두 번 클릭 한 다음 "참조"로 이동 한 다음 "추가"를 클릭하고 "닷넷"탭을 선택하여 system.windows.forms를 가져올 수 있습니다 System.windows.forms를 선택합니다. 내가 다른 언어로 Visual Studio를 사용하고 있기 때문에 그 이름이 올바른 영어 이름이되기를 바랍니다.

+0

도움을 주셔서 감사합니다.하지만 콘솔 응용 프로그램입니다. 타이머 응용 프로그램을 사용할 수 있습니까? – vbNewbie

+0

@vbNewbie 예, 콘솔 응용 프로그램에서도 작동합니다. 콘솔 응용 프로그램에서 작동하도록 게시물을 편집 할 것입니다. – Tracer