2013-07-19 27 views
0

我正在爲生物識別系統創建自我註冊系統。 我正試圖創建一個循環與定時器混合。 我想捕捉圖像,然後停止計時器,並等待5秒,再次捕捉5次。 我正在嘗試使用thread.sleep,但它會讓我的圖片框停止播放視頻。但根據下面的代碼,它會直接捕獲5張圖像,並且不停地循環。請糾正我。由於 (5秒計時器>捕捉>計時器停止)* 5次,最後全部停止C#混合定時器和循環

private void timer1_Tick(object sender, EventArgs e) 
{ 
    int a = 1; 

    /* while loop execution */ 
    while (a < 5) 
    { 
     CaptureFunction(); 
     a++; 
     timer1.Stop(); 
    } 
    timer1.Start(); 
} 
+1

你沒有問一個問題... – asawyer

+0

: 然後使用此代碼:

int photosTaken = 0; private void timer_Tick(object sender, EventArgs e) { CaptureFunction(); photosTaken++; if(photosTaken == 5) { timer.Stop(); } } 

如果你想捕捉另一個5,使用此功能大部分你不需要的代碼,你只需要顯示一個新的圖片,你的messagebox.show也可能搞砸你的時間 – Sayse

+0

對不起,男士們,消息框只是爲了我的測試目的,而我正在尋找解決方案。 –

回答

0

這應該解決:

int a = 1; 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     if(a <= 5) 
     { 
      CaptureFunction(); 
      a++; 
     } 
     else 
      timer1.Stop(); 
     //place this just in case.... 
    } 

哦...如果你真的要放置在MessageBox ,放在增量(a ++)之後。

+0

對不起,我剛纔犯了一個錯誤,消息框只是爲了我的測試目的。我想在拍攝5張照片後停止拍照。我嘗試了代碼,但它不停地拍照,有什麼想法? –

+0

那麼問題可能在捕獲函數中,因爲在此代碼中,直到a爲5纔會執行這些行。 – terrybozzio

+0

我已經編輯過,只是爲了測試它。 – terrybozzio

1

可以改變定時器的時間間隔,因此只觸發每5秒:

http://msdn.microsoft.com/en-us/library/system.windows.forms.timer.interval(v=vs.100).aspx

5000相當於5秒。如果定時器的時間間隔爲5秒,然後

private void capture5() 
{ 
    photosTaken = 0; 
    timer.Start(); 
} 
+0

它像我這樣做了相同的pharap:timer1.Enabled = a == 5?假:真;也做了工作。我試了代碼,它的工作原理可能在定時器的一些設置.... – terrybozzio

+0

謝謝Pharap,它的工作原理。 –

+0

@terrybozzio而不是timer.Enabled =(a == 5)?false:true;寫timer.Enabled =!(a == 5)會更有意義; – Pharap