2015-09-04 42 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

您提供的解决方案没有帮助 –