-1

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

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

1 回答 1

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;
              }
            }
        }
    }
于 2013-07-14T04:52:37.890 回答