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

时间:2013-07-14 04:30:15

标签: c# .net

我正在开发一个应用程序,其中我在循环中播放声音。我希望循环停止鼠标单击或按键并重新启动循环。我正在使用c#,。net。我面临的问题是循环继续执行而不捕获鼠标/键盘的输入,直到达到其最大指定值。我的代码是

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

1 个答案:

答案 0 :(得分:0)

你必须在另一个线程中使用你的循环而不是UI线程。

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

但就目前而言,此示例代码可满足您的需求。

        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;
              }
            }
        }
    }