我有一个用户与 C# WPF 程序一起交互的设备。当用户按下设备上的按钮时,该程序必须发出哔声,持续指定的时间或只要用户按下按钮,以较短者为准。唯一可产生哔声/音调的扬声器是计算机 BIOS 扬声器;我们不能假设周围有其他发言者(实际上可以假设没有任何其他发言者)。
如何在必要的持续时间内产生连续的音调?
到目前为止,我会发出很多哔哔声,但不是连续的音调。
首先,启动一个线程:
private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) {
if(this.Visibility == Visibility.Visible){
mBeepThread = new Thread(new ThreadStart(ProduceTone));
mBeepThread.Name = "Beep Thread";
mBeepThread.Start();
}
}
线程本身:
bool mMakeTone = false;
private void ProduceTone(){
while(this.Visibility == Visibility.Visible){
if(mMakeTone ){
Console.Beep();
}
else{
Thread.Sleep(10);
}
}
}
然后在按钮按下期间,mMakeTone 布尔值被翻转为 true,直到设备本身指定的时间。
我怀疑这只是对上面的 Console.Beep() 行的快速更改,但我不确定它会是什么。