如何控制台。在鼠标点击期间(等待)?

时间:2013-03-30 18:10:14

标签: c# console beep

所以,我正在尝试使用简单的GUI在C#上用Beeps制作音乐。我一直在尝试,但我不确定是否甚至可以制作一个Console.Beep play,例如我按住一个按钮。

正常的Beep()方法只是播放一个中等频率的短蜂鸣声,并且有一个过载Beep(int频率,int持续时间)。我想要做的实际上是在我按住按钮时播放它,但显然我以前不能说出持续时间。

我认为这是不可能的,但也许有办法吗?

这也是我在网站上的第一个问题,所以,嘿。

1 个答案:

答案 0 :(得分:3)

你可以这样做,我只是测试它并且它可以工作,并且在运行时不会锁定表单。

    private void Window_MouseDown_1(object sender, MouseButtonEventArgs e)
    {
        // Starts beep on background thread
        Thread beepThread = new Thread(new ThreadStart(PlayBeep));
        beepThread.IsBackground = true;
        beepThread.Start();
    }
    private void PlayBeep()
    {
        // Play 1000 Hz for max amount of time possible
        // So as long as you dont hold the mouse down for 2,147,483,647 milliseconds it should work.
        Console.Beep(1000, int.MaxValue);
    }

    private void Window_MouseUp_1(object sender, MouseButtonEventArgs e)
    {
        //Aborts the beep with a new 1ms beep on mouse up which finishes the task.
        Console.Beep(1000, 1);
    }