C #: производить непрерывный тон до прерывания
У меня есть устройство, с которым пользователь взаимодействует вместе с программой 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 () выше, но я не уверен, что это будет.