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,不应该用于任何生产,但在快速和肮脏的测试设置中,它可能是值得的。