C#控制台程序永远等待事件
我有一个简单的C#控制台应用程序,它连接到一个事件。我需要程序持续运行,以便它能够响应事件。保持它运行的正确方法是什么 这是我的申请表:C#控制台程序永远等待事件,c#,C#,我有一个简单的C#控制台应用程序,它连接到一个事件。我需要程序持续运行,以便它能够响应事件。保持它运行的正确方法是什么 这是我的申请表: using System; using NAudio.CoreAudioApi; namespace MaxVolume { class Program { private const float DesiredLevel = -15; private static MMDevice _device;
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,不应在任何生产中使用,但在快速且肮脏的测试设置中,这可能是值得的。对于
异步
主方法,也可以使用等待任务。延迟(-1)代码>也许您应该考虑创建一个窗口service@RobinNadeau最终我会的,但现在我需要它是一个控制台应用程序,以便非管理员用户可以使用它进行测试。这不是线程安全的,并且会挂起一个CPU核心。别这么做。编辑它是为了反映我对使用它的想法。丁,我们有赢家了!