2012-02-06 3 views
0

일부 설정을 수행 할 수있는 GUI가있는 응용 프로그램이 있습니다. 설정 중 하나는 다양한 소스의 데이터 수집이 실행되는 시간을 설정하는 것입니다. 실제 작업을 수행하는 Windows 서비스는 설정된 시간이 될 때까지 잠자는 스레드를 실행하고 있습니다.Windows 서비스의 시간 변경을 처리하는 방법

질문

내 질문에 내 서비스가 자고 누군가가 데이터 수집이 발생하는 경우에 대한 시간을 변경하기로 결정하면이, 변경된 시간의 서비스를 통지하는 가장 좋은 방법은 무엇입니까?

제 GUI 부분에서 창에 특정 서비스를 다시 시작할 수 있습니까? 아니면 스레드 인터럽트를 보낼 수 있습니까? 어떻게 할 건데?

답변

1

실행중인 계정에 적절한 권한이 있으면 GUI가 확실히 서비스를 제어 할 수 있습니다.

당신은이에 대한 ServiceController 클래스를 사용할 수 있습니다 :

ServiceController sc = new ServiceController("Simple Service"); 
if (sc.Status == ServiceControllerStatus.Stopped) 
{ 
    sc.Start(); 
    while (sc.Status == ServiceControllerStatus.Stopped) 
    { 
     Thread.Sleep(1000); 
     sc.Refresh(); 
    } 
} 

또 다른 옵션을 설정을 가정 파일에 저장되어있는 파일에 대한 변경 사항을 모니터링 할 FileSystemWatcher 클래스를 사용하는 - 이것은 당신이 볼 수 있습니다 값이 변경되고 서비스에서 재설정 된 경우.

관련 문제