我正在开发一个应用程序,其中我在循环中播放声音。我希望循环停止鼠标单击或按键并重新启动循环。我正在使用c#,。net。我面临的问题是循环继续执行而不捕获鼠标/键盘的输入,直到达到其最大指定值。我的代码是
for(soundVolume = 0; soundVolume < 10; soundVolume++)
{
sound.Play();
if(mouseClick == true)
{
soundVolume = 0;
}
}
答案 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;
}
}
}
}