В настоящее время я тестирую сторонний API, где некоторые события запускаются с удаленного сервера, который я пытаюсь захватить с помощью простого приложения консоли Windows.Событие захвата приложения консоли только при запуске из 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(); наконец, в основном методе? Возможно, это сработает. –