Как Console.Beep, пока (во время) щелчок мыши вниз?

Итак, я пытаюсь сделать простой графический интерфейс для создания музыки с Beeps на C#. Я пытался, но я не уверен, возможно ли вообще заставить работать Console.Beep, когда я удерживаю кнопку, например.

Есть нормальный метод Beep(), который просто воспроизводит короткий звуковой сигнал со средней частотой, и есть звуковой сигнал перегрузки (частота int, длительность int). То, что я хочу сделать, - это играть на самом деле все время, пока я держу кнопку, но, очевидно, я не могу предварительно указать продолжительность.

Я думаю, что это невозможно, но, может быть, есть способ?

Это также мой первый вопрос на сайте, так что, эй.

1 ответ

Решение

Вы можете сделать это так, я только что проверил, и это работает, и не блокирует форму во время работы.

    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);
    }
Другие вопросы по тегам