您必須在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;
}
}
}
}
非常感謝,它的工作完美 –