我有一个附加到事件的简单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;
}
}
}
}
答案 0 :(得分:14)
您可以拨打<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#borked {
background: yellow;
position: relative;
height: 100%;
}
#borked~* {
height: 100px;
}
#borked::before {
content: "";
position: absolute;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(255, 0, 0, 0.3);
}
</style>
</head>
<body>
<table>
<tr><td id="borked">abc</td><td>def</td></tr>
</table>
</body>
<script type="text/javascript">
"use strict";
var borked = document.getElementById("borked");
var c = document.createElement("td");
c.textContent = "(1st cell seems to be " + borked.clientHeight + "px tall)";
borked.parentElement.appendChild(c);
</script>
</html>
(如果您想终止按键),或只是Console.ReadLine()
。
答案 1 :(得分:1)
在使用async
主方法的情况下,也可以使用await Task.Delay(-1);
答案 2 :(得分:-2)
您可以像这样创建一个while循环:
while(!eventFired) {}
然后有一个字段:
private bool eventFired = false;
然后最终在事件被触发时make:
eventFired = true;
(如果你希望它在事件被触发一次之后退出,那就是。如果它应该永远运行,请参阅sleep和readkey的其他答案)
注意:这耗尽了CPU,不应该在任何生产中使用,但在快速而肮脏的测试设置中,它可能是值得的。