2013-02-22 1 views
0

나는 특정 시간대에 기능을 실행할 VB 콘솔 프로그램을 작성하고 있습니다. 이것은 내가 지금까지 가지고있는 것이다.시간 값을 appsetting 값과 비교 함

Sub Main() 
    Do 
    Dim backupTime As String 

    backupTime = My.Settings.backupTime 


    While TimeOfDay = backupTime 
     Threading.Thread.Sleep(2000) 
    End While 


    backup() 
    loop 
End Sub 

문제가

<userSettings> 
    <ZipAJob_Timed.My.MySettings> 
     <setting name="backupTime" serializeAs="String"> 
      <value>#01:59:00 PM#</value> 
     </setting> 
    </ZipAJob_Timed.My.MySettings> 
</userSettings> 

의 app.config 파일에 저장되어 언급되고있는 "backuptime이라는"그 "는 않지만"루프 체크 "TimeofDay"에 대한 2 초마다 "backupTime"과 일치시킵니다. 그러나 그것은 2 초 동안 매치를 놓치기 때문에 뛰지 못하는 프로그램으로 이어질 수 있습니다. 따라서 초를 무시하거나 TimeofDay.minutes/hours 및 backupTime.minutes/hours 만 일치시켜야합니다.

구문 분석을 살펴 보았지만 어디에서 시작해야하는지 정확히 알지 못했습니다.

+0

작업을 한 번 종료 한 다음 예약 된 작업으로 추가하면 (Windows의 컴퓨터 관리에서 작업 스케줄러를 사용하여)? –

+0

네, 그게 쉬운 길입니다. 나는 새로운 것을 배우려고 노력하고 있습니다. – MaylorTaylor

답변

2

= 대신 <을 사용하면 어떨까요?

While TimeOfDay < backupTime 
    Threading.Thread.Sleep(2000) 
End While 

그러나 루프 대신 지정된 시간에 시작되는 타이머 또는 Windows-Task를 사용합니다.

+0

이것은 VB Console 응용 프로그램이므로 Timer가 옵션인지 잘 모르겠습니다. 그리고 스티븐에게 말했듯이, 나는 새로운 것을 시도하고 싶다. 난이 모든 VB에서 여전히 녹색이다. 그래서 나는 모든 것을 힘든 방법으로 한번 시도하고있다. – MaylorTaylor

+0

'System.Windows.Forms.Timer'는 옵션이 아니지만'System.Timers.Timer'는 될 것이다. 훌륭한 옵션. –

+0

@MaylorTaylor :'Option Strict'를 ON으로 설정하는 것이 좋습니다. 아마도 많은 컴파일러 오류가 발생하지만 더 빨리 배울 수 있습니다. 그런 다음 설정 유형을 문자열에서 'TimeSpan'으로 변경해야합니다. http://social.msdn.microsoft.com/Forums/en-US/csharpide/thread/be60552d-d155-449d-b135-4770c5aa271c/ –