2013-07-14 64 views
-1

我正在開發一個應用程序,在該應用程序中我在循環中播放聲音。我希望循環停止在鼠標單擊或按鍵上並重新啓動循環。我正在使用c#,.net。我面臨的問題是循環繼續執行,直到達到其最大指定值時才捕獲來自鼠標/鍵盤的輸入。我的代碼是用鼠標單擊或按鍵停止循環

for(soundVolume = 0; soundVolume < 10; soundVolume++) 
{ 
sound.Play(); 
if(mouseClick == true) 
    { 
    soundVolume = 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; 
       } 
      } 
     } 
    } 
+0

非常感謝,它的工作完美 –