ユーザーが 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() 行を簡単に変更しただけだと思いますが、それがどうなるかはわかりません。