현재 간단한 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!");
}
}
닫기 이벤트를 발생 시키거나 잠자기와 함께 키를 눌러 대기를 막을 때까지 기다릴 수 있습니다. 어떻게 끝내고 싶니? – doctorlove
나는 닫는 이벤트 나 깃발에 대해서'waitone()'을 사용하는 것과 같은 접근법을 사용하려고 시도했으나 이것은 또한 이벤트 캡쳐를 막는다. 추가 단계로서이 서비스를 시작하여 서비스를 중지하자마자 백그라운드에서 계속 실행될 수 있도록 Windows 서비스로 배포하는 것을 목표로 삼았습니다. 그래서 지금은 모니터링을 중지하기 위해 전체 앱을 종료하는 것이 좋습니다. – LePhleg
Console.Read()를 추가해 보았습니까? 마침내 주요 방법에서? 그것일지도 모른다. –