C# 控制台应用程序仅在从Visual Studio运行时捕获事件

C# 控制台应用程序仅在从Visual Studio运行时捕获事件,c#,multithreading,visual-studio,event-handling,console-application,C#,Multithreading,Visual Studio,Event Handling,Console Application,我目前正在测试一个第三方API,其中一些事件是从远程服务器触发的,我正试图用一个简单的windows控制台应用程序捕获这些事件 只要我按F5运行我的控制台应用程序,我的场景就会顺利运行。事件被实时捕获和显示 因此,我尝试部署应用程序并独立运行。当然,现在main()在命令用完后立即终止程序执行。我已经尝试了几种解决方案,我在诸如或之类的问题中找到了它们 使用无限循环,等待用户输入或等待关闭事件的waitone(),会导致阻塞状态,无法再捕获事件 因此,我坦率地问,有没有一种方法可以模拟Visua

我目前正在测试一个第三方API,其中一些事件是从远程服务器触发的,我正试图用一个简单的windows控制台应用程序捕获这些事件

只要我按F5运行我的控制台应用程序,我的场景就会顺利运行。事件被实时捕获和显示

因此,我尝试部署应用程序并独立运行。当然,现在main()在命令用完后立即终止程序执行。我已经尝试了几种解决方案,我在诸如或之类的问题中找到了它们

使用无限循环,等待用户输入或等待关闭事件的
waitone()
,会导致阻塞状态,无法再捕获事件

因此,我坦率地问,有没有一种方法可以模拟VisualStudio调试器的运行方式来运行我的控制台

仅供参考,您可以在下面找到我的示例代码:

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!");
        }
    }

最后介绍了主要方法。 在用户按下任意键之前,它不会关闭应用程序,也不会阻止事件处理程序。

添加

最后介绍了主要方法。
它不允许关闭应用程序,直到用户按下任意键,并且它也不会阻止事件处理程序。

您可以执行一些操作,例如触发关闭事件,或者等待一个键被睡眠击中以停止阻止。您想如何结束它?我也尝试过使用类似您所指的方法,对某些关闭事件或标志使用
waitone()
,但这也会导致阻止事件捕获。作为下一步,我打算将其部署为windows服务,以便在启动和停止服务后,它可以在后台持续运行。所以现在,仅仅终止整个应用程序来停止监控对我来说是件好事;最后在主要方法?也许有用。@MD的哇。。它确实奏效了!我真的无法理解这与
ReadKey()
之间的区别,后者似乎阻止了等待用户输入的事件处理。然而,这让我想知道,在没有实际控制台的windows服务中,这也会起作用…@LePhleg accept as anwer。您可以执行一些操作,如触发关闭事件,或等待按键被睡眠击中以停止阻塞。您想如何结束它?我也尝试过使用类似您所指的方法,对某些关闭事件或标志使用
waitone()
,但这也会导致阻止事件捕获。作为下一步,我打算将其部署为windows服务,以便在启动和停止服务后,它可以在后台持续运行。所以现在,仅仅终止整个应用程序来停止监控对我来说是件好事;最后在主要方法?也许有用。@MD的哇。。它确实奏效了!我真的无法理解这与
ReadKey()
之间的区别,后者似乎阻止了等待用户输入的事件处理。然而,这让我想知道,在没有实际控制台的windows服务中,这也会起作用……@LePhleg accept as anwer。
Console.Read();