C#控制台程序永远等待事件

我有一个简单的C#控制台应用程序附加到事件。 我需要程序继续运行,以便它可以响应事件。 什么是保持运行的正确方法?

这是我的申请:

using System; using NAudio.CoreAudioApi; namespace MaxVolume { class Program { private const float DesiredLevel = -15; private static MMDevice _device; static void Main(string[] args) { MMDeviceEnumerator mmde = new MMDeviceEnumerator(); _device = mmde.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia); _device.AudioEndpointVolume.MasterVolumeLevel = DesiredLevel; _device.AudioEndpointVolume.OnVolumeNotification += SetVolume; } static void SetVolume(AudioVolumeNotificationData data) { if (Math.Abs(data.MasterVolume - DesiredLevel) > 0.1) { _device.AudioEndpointVolume.MasterVolumeLevel = DesiredLevel; } } } } 

您可以调用Console.ReadLine() (如果要终止击键),或者只调用Thread.Sleep(Timeout.Infinite)

您可以像这样创建一个while循环:

 while(!eventFired) {} 

然后有一个字段:

 private bool eventFired = false; 

然后最终当事件被触发时:

 eventFired = true; 

(如果你希望它在事件被触发一次之后退出,那就是。如果它应该永远运行,请参阅sleep和readkey的其他答案)

注意 :这用完了CPU,不应该用于任何生产,但在快速和肮脏的测试设置中,它可能是值得的。