Как 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);
}