2015-09-04 80 views
1

我想在應用程序中發出連續的嘟嘟聲直到中斷。

方法發出連續的嘟嘟聲,直到c中斷#

  1. 顯示與重試一個消息框,取消按鈕
  2. 製作蜂鳴繼續發聲,直到我按取消
  3. 如果按重試嗶聲不應該停止


我試過這個使用Console.beep(),但它只發出一次聲音。
任何想法??

+4

您的用戶將喜歡該功能。 – CodeCaster

+0

你可以發表一些代碼嗎? – Marcus

+0

這應該有所幫助:http://stackoverflow.com/questions/1195828/c-produce-a-continuous-tone-until-interrupted – ken2k

回答

3

如你所知,當然,這種方法有多個構造...你可以指定它的frequencyduration

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);

您還可以創建一個新的線程和公共布爾,然後運行一個while循環,就像這樣:

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(); 
     } 
    } 

在Form1載入事件中

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

它沒有幫助。 –

0

將嘟嘟聲()放在一個循環中,並以新的方式啓動它。例如:

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

您提供的解決方案沒有幫助 –