我正在开发一个循环播放声音的应用程序。我希望循环在鼠标单击或按键时停止并重新启动循环。我正在使用 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;
}
}
}
}