用鼠标点击或按键停止循环

本文关键字:循环 鼠标 | 更新日期: 2023-09-27 18:22:10

我正在开发一种在循环中播放声音的应用程序。我希望循环在鼠标点击或按键时停止,然后重新开始循环。我使用的是c#,.net。我面临的问题是循环在没有从鼠标/键盘捕获输入的情况下继续执行,直到它达到指定的最大值。我的代码是

for(soundVolume = 0; soundVolume < 10; soundVolume++)
{
sound.Play();
if(mouseClick == true)
    {
    soundVolume = 0;
    }
}

用鼠标点击或按键停止循环

您必须在UI线程之外的另一个线程中使用循环。

为了简单起见,我在这里使用了CheckForIllegalCrossThreadCalls=false。但是如果你不使用它,你将面临一个错误,显示你想从另一个线程访问UI线程。必须以此处讨论的更好的方式处理

但是现在,这个示例代码满足了您的需要。

        bool mouseClick =false;
        private void Form1_Load(object sender, EventArgs e)
        {
            CheckForIllegalCrossThreadCalls = false;
        }
        private void Form1_MouseClick(object sender, MouseEventArgs e)
        {
            mouseClick = true;
        }
        private void button1_Click(object sender, EventArgs e)
        {
        var x=new Action(doit).BeginInvoke(null,null); //Do something in other thread that UI Thread
        }
        private void doit()
        {
            for(soundVolume = 0; soundVolume < 10; soundVolume++)
            {
              sound.Play();
             if(mouseClick == true)
              {
               soundVolume = 0;
              }
            }
        }
    }