2015-09-04 7 views
1

Я хочу сделать непрерывный звуковой сигнал в приложении до прерывания.

подходсделать непрерывный звуковой сигнал до тех пор, пока не прервется C#

  1. Показать окно сообщения с повторить попытку отменить кнопку
  2. Make Beep звучать непрерывно, пока не нажата клавиша Отмена
  3. Если нажать Retry звуковой сигнал не должен остановить


Я пробовал это с помощью Console.beep(), но он звучит только один раз ,
Любые идеи?

+4

Ваши пользователи будут любить эту функцию. – CodeCaster

+0

Можете ли вы разместить код, пожалуйста? – Marcus

+0

Это должно помочь: http://stackoverflow.com/questions/1195828/c-produce-a-continuous-tone-until-interrupted – ken2k

ответ

3

Как вы знаете, конечно, этот метод имеет несколько конструкторов ... Вы можете указать это frequency и duration:

Console.Beep(100,10000); 

Еще одно предложение для вашего случая это просто петля его в соответствии с логической переменной:

bool stop = false; 

     while (!stop) 
     { 
      Console.Beep(); 
     } 
+0

@Jamiec Я пробовал это, но второй параметр связан со временем, который мой старший не доволен. Он хочет играть в нее непрерывно. –

+0

@GajendraRajput вы имеете в виду играть навсегда? infinitly? – Slashy

+0

Вид, но должен остановиться при нажатии на отмену. –

1

Console.Beep(); имеет два аргумента, длину и тон.

Использование так: Console.Beep(tone_in_hz, length_in_milliseconds);

Вы также можете создать новую тему и общедоступный булево, а затем запустить время цикла, например, так:

private void Beeper() 
{ 
    while(makeBeepSound) 
    { 
     Console.Beep(); 
    } 
} 
0

Попробуйте

public void Beep() 
    { 
     if (MessageBox.Show("Message", "Alert", MessageBoxButtons.RetryCancel) == DialogResult.Retry) 
     { 
       Console.Beep(5000, 5000); 
       Beep(); 
     } 
    } 

В случае события формы 1

private void Form1_Load(object sender, EventArgs e) 
    { 
     Beep(); 
    } 
+0

Это не помогло. –

0

Место Beep() в цикле и запустите его в новом проходе. Например:

class Beeper 
    { 
     private int _gapMiliseconds; 
     private bool _stop = false; 

     public Beeper(int gapMiliseconds) 
     { 
      _gapMiliseconds = gapMiliseconds; 
     } 

     public void Start() 
     { 
      while (!_stop) 
      { 
       Console.Beep(); 
       Thread.Sleep(_gapMiliseconds); 
      } 
     } 

     public void Stop() 
     { 
      _stop = true; 
     } 
    } 

и код для запуска и остановки в виде нити.

 Beeper beeper = new Beeper(100); 
     Thread thread = new Thread(new ThreadStart(beeper.Start)); 
     thread.Start(); 
     Thread.Sleep(5000); 
     beeper.Stop(); 
+0

Решение, которое вы предоставили, не помогло –