2009-09-01 4 views
0

C# 서비스를 만들었지 만 시작에 실패했습니다.C# 서비스가 시작되지 않습니다.

로컬 컴퓨터의 시스템 사용 모니터 서비스가 시작된 다음 중지되었습니다. 일부 서비스는 수행 할 작업이 없으면 자동으로 중지합니다 (예 : 성능 로그 및 알림> 서비스).

내 ONSTART 재정의 다음은 ...

/// <summary> 
    /// OnStart(): Put startup code here 
    /// - Start threads, get inital data, etc. 
    /// </summary> 
    protected override void OnStart(string[] args) 
    { 
    base.OnStart(args); 

    broadcaster = new UdpBroadcaster(IP_Address, Port); 
    itm = new IdleTimeMonitor(1 * 1 * 3000, 1000); 
    aam = new ActiveApplicationMonitor(1000); 

    itm.IdleTimeExceeded += new IdleTimeExceededDelegate(itm_IdleTimeExceeded); 
    itm.IdleTimeReset += new IdleTimeResetDelegate(itm_IdleTimeReset); 
    itm.IdleTimeEvaluated += new IdleTimeEvaluatedDelegate(itm_IdleTimeEvaluated); 

    aam.StartedUsingApplication += new StartedUsingApplicationDelegate(aam_StartedUsingApplication); 
    aam.EndedUsingApplication += new EndedUsingApplicationDelegate(aam_EndedUsingApplication); 
    aam.ApplicationEvaluated += new ApplicationEvaluatedDelegate(aam_ApplicationEvaluated); 
    } 

내가 그 기능 또는 무언가의 끝에서 차단해야합니까? 왜 내 서비스가 시작되지 않습니까?

답변

2

이벤트 로그를 살펴보면 서비스가 시작된 후 어떤 이유로 응용 프로그램 로그에 예외 이벤트가 발생하면 충돌이 발생합니다.

+0

충돌이 발생하면 기록 될 수 있습니다. 그들이받은 메시지는 이벤트 로그에서 왔습니다. – Spence

+0

Spot on! 내 스레드 중 하나가 null 참조 예외 때문에 시작하지 못했습니다. – Nippysaurus

3

실 뛰기를 시작 했습니까?

무언가를 처리하는 스레드가 없으면 응용 프로그램이 닫히고 따라서 서비스가 종료되도록 스레드가없는 경우 스레드가없는 경우 (UdpBrodacaster에서 스레드를 제외하고) 응용 프로그램이 닫힙니다.

편집 : ManualResetEvent 신호를 보내지 않고 스레드 호출 WaitOne()을 선언하면됩니다. 그런 다음 OnStop() 신호에서 이벤트 (.Set())를 호출하여 스레드를 깨우고 종료하여 서비스를 종료하십시오.

+0

예 스레드가 있습니다 ...하지만 시작하지 못했습니다. – Nippysaurus

1

코드를 try-catch-Block의 OnStart (string [])에 넣고 예외가 발생하면 로그 파일에 로그를 남깁니다. 인스턴스를 만드는 데 문제가 있다고 생각합니다.

관련 문제