2015-09-07 42 views
0

從其他網站的一些參考,我已經開發了一個代碼,檢查項目是否可供出售。
如果該項目不可用,它應該在背景中發出一個嗶聲以及一個對話框(重試/取消)。

此外,如果用戶點擊重試,嘟嘟聲不應該停止。
否則單擊取消應停止背景中的嘟嘟聲。

代碼中,我使用
在背景中播放嗶聲

    if() 
        { 
        Item exists code 
        } 
        else 
        { 
         //Item Not found 
         retry(); 
        } 

public void retry() 
    { 
     Thread beepThread = new Thread(new ThreadStart(PlayBeep)); 
     beepThread.IsBackground = true; 

     if (MessageBox.Show("Item not found", "Alert", MessageBoxButtons.RetryCancel) == DialogResult.Retry) 
     {     
      beepThread.Start();     
      retry(); 
     } 
     else 
     { 
      beepThread.Abort(); 
      Console.Beep(500, 1); 
      return; 
     } 
    } 

    private void PlayBeep() 
    { 
     Console.Beep(500, int.MaxValue); 
    } 


使用上面的代碼中,播放的聲音,當我點擊重試但我想,因爲它進入else條件使其儘快發揮(當項目是沒有找到)
有什麼建議嗎?

回答

1

您應該在出現消息框之前開始發出嗶聲。爲了不會有太多未使用的threads,你必須在兩種情況下中止它們。
最後,我會建議使用while(true)循環,以獲得無盡的嘟嘟聲。

public void retry() 
    { 
     Thread beepThread = new Thread(new ThreadStart(PlayBeep)); 
     beepThread.IsBackground = true; 
     beepThread.Start(); 

     if (MessageBox.Show("Item not found", "Alert", MessageBoxButtons.RetryCancel) == DialogResult.Retry) 
     { 
      beepThread.Abort(); 
      retry(); 
     } 
     else 
     { 
      beepThread.Abort(); 
      Console.Beep(500, 1); 
      return; 
     } 
    } 

    private void PlayBeep() 
    { 
     while(true) 
      { Console.Beep(500, int.MaxValue); } 
    } 
+0

謝謝@Jibbow它真的幫助:) –