我有一個用戶與C#WPF程序並行的設備。當用戶按下設備上的按鈕時,該程序必須發出嘟嘟聲,持續指定的時間或只要用戶按下按鈕(以較短者爲準)。唯一可用於產生嗶聲/音調的揚聲器是計算機BIOS揚聲器;我們不能假設其他演講者都在附近(並且假設不會有其他演講者實際上是安全的)。C#:產生連續色調直到中斷
如何在必要的持續時間內產生連續音?
我到目前爲止所產生的蜂鳴聲很多,但並不是連續的聲調。
首先,線程啓動:
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布爾翻轉爲真,直至時刻由設備本身指定。
我懷疑這只是上面的Console.Beep()行的快速更改,但我不確定它會是什麼。
首次檢查看起來像是一個更好的解決方案。但是在我的測試中,從.net提供更長的控制檯嗶聲似乎會導致嚴重的問題。在試驗5秒鐘和更長時間的嗶聲時,我的兩臺開發機器都採用了藍屏。我不記得上次在此之前我的任何一臺機器都被藍屏蔽了...... – andynormancx 2009-07-28 19:07:13
在這種情況下,替代方案似乎是安裝假聲卡驅動程序或在後臺線程中使用持續時間小於藍屏死機爲你,有一個機制脫離循環。 – 2009-07-28 19:16:36