Server A
에서 Server B
으로 문서를 이동시키는 SSIS 패키지를 주기적으로 실행하는 Windows 서비스를 작성했습니다.OnStart() 메서드에서 무한 루프로 인해 Windows 서비스가 항상 "시작"중임
문제는 서비스를 시작할 때 시작되는 무한 루프를 사용해야한다는 것입니다.
당연히이 루프를 OnStart()
메서드에 넣었습니다.
protected override void OnStart(string[] args)
{
Application app = new Application();
Package pkg = app.LoadFromDtsServer(@"MSDB\PullDoc", "Server", null);
while (true)
{
DTSExecResult pkgResults = pkg.Execute();//Execute the package.
EventLog.WriteEntry(pkgResults.ToString());
Thread.Sleep(1000 * 60 * 5);//Sleep at least five minutes.
}
}
내가이 일반적인 문제입니다 상상, 주어진 : 불행하게도, 서비스는이 방법의 끝에 도달하지 이후 여기
는 관련 코드 ... 시작되었음을 신호를 결코 대부분의 서비스가 무기한으로 실행되어야합니다.이 서비스가 시작된 것을 반환하는 방법에 대한 아이디어가 있으십니까?
감사합니다.
관련 질문 : 타이머를 사용할 때 메서드가 아직 실행을 완료하지 않은 경우에도 5 분마다 콜백 메서드가 호출됩니다. 방법의 끝까지 계산하지 않는 간단한 방법이 있습니까? – nosirrahcd
@user : 타이머가 한 번만 실행되도록 설정 한 다음 메서드가 끝날 때 다시 시작합니다. – SLaks