0

현재 간단한 Windows 콘솔 앱으로 캡처하려고하는 원격 서버에서 일부 이벤트가 트리거되는 제 3 자 API를 테스트하고 있습니다.Visual Studio에서 실행될 때만 콘솔 앱 캡처 이벤트가 발생합니다.

F5 키를 눌러 내 콘솔 앱을 실행하는 한 원활하게 실행됩니다. 이벤트는 실시간으로 캡처되고 표시됩니다.

그래서 앱을 배포하고 독립 실행 해 보았습니다. 물론 main()은 명령이 없어지 자마자 프로그램 실행을 종료합니다. 나는 How to keep a .NET console app running? 또는 What is the best way to keep a C# Console app running과 같은 질문에서 발견 한 몇 가지 해결책을 시도했다.

무한 루프를 사용하여 사용자 입력을 기다리거나 닫는 이벤트에 대해 waitone()을 입력하면 이벤트를 더 이상 캡처 할 수없는 차단 상태가 발생했습니다.

저는 솔직히 묻습니다. Visual Studio 디버거로 실행되는 방식을 에뮬레이션하는 콘솔을 실행하는 방법이 있습니까?

class Program 
    { 

     static void Main(string[] args) 
     { 
      Program program = new Program(); 

      //Login to third-part API service 
      Net2 net2 = new Net2(); 
      net2.Login(); 

      //Monitor events from a devoce 
      net2.client.MonitorAcu(1172079); 
      Console.WriteLine("Monitoring ACU #1172079. Listening for events..."); 

      //Subscribe for events 
      net2.client.Net2AccessEvent += new OemClient.Net2AcuEventHandler(program.Net2AccessEvent); 

     } 

     private void Net2AccessEvent(object sender, IEventView e) 
     { 
      Console.WriteLine("An event was captured!"); 
     } 
    } 
+0

닫기 이벤트를 발생 시키거나 잠자기와 함께 키를 눌러 대기를 막을 때까지 기다릴 수 있습니다. 어떻게 끝내고 싶니? – doctorlove

+0

나는 닫는 이벤트 나 깃발에 대해서'waitone()'을 사용하는 것과 같은 접근법을 사용하려고 시도했으나 이것은 또한 이벤트 캡쳐를 막는다. 추가 단계로서이 서비스를 시작하여 서비스를 중지하자마자 백그라운드에서 계속 실행될 수 있도록 Windows 서비스로 배포하는 것을 목표로 삼았습니다. 그래서 지금은 모니터링을 중지하기 위해 전체 앱을 종료하는 것이 좋습니다. – LePhleg

+1

Console.Read()를 추가해 보았습니까? 마침내 주요 방법에서? 그것일지도 모른다. –

답변

2

주요 방법 마지막에

Console.Read(); 

을 추가

그냥 참조 아래 내 샘플 코드를 찾을 수 있습니다. 사용자가 아무 키나 누를 때까지 응용 프로그램을 닫을 수 없으며 이벤트 처리기도 차단하지 않습니다.

관련 문제