2013-08-07 19 views
0

所以我使用Kinect SDK來創建應用程序,並且進展順利!我試圖讓一個按鈕拍一張照片,但我希望代碼能夠延遲拍攝,這樣人們有時間擺姿勢。我試過使用System.Threading.Thread.Sleep(3000);但是會發生什麼事情就是整個事情都凍結了(是的,我知道那就是睡眠......)並且無論如何它都會使用第一幀。所以現在我試圖使用定時器和定時事件,但由於無法使其靜態(Kinect事物)而不斷收到錯誤。使用Kinect SDK的計時器已結束事件

public class Timer1 
{ 
    private System.Timers.Timer aTimer; 

    public void Main() 
    { 
     aTimer = new System.Timers.Timer(3000); 
     //This is where the problem is. I'm getting "Cannot access a non-static member of outer type 'KinectButton.MainWindow' via nested type 'KinectButton.MainWindow.Timer1' 
     aTimer.Elapsed += new ElapsedEventHandler(takepicture); 
     aTimer.Interval = 1000; 
     aTimer.Enabled = True; 
    } 
} 

[private void takepicture(object sender, ElapsedEventArgs e) 
{ 
    BitmapSource image = (BitmapSource)videoStream.Source; 

    image.Save(DateTime.Now.ToString("ddMMyyyy HHmmss") + ".jpg", ImageFormat.Jpeg); 
} 

private void button7_Click(object sender, RoutedEventArgs e) 
{ 
    //Here I'm also getting "'KinectButton.MainWindow.Timer1' does not contain a definition for 'Enabled'" 
    Timer1.Enabled = true; 
} 

private void Timer1_Tick(object sender, EventArgs e) 
{ 
    //Here I'm getting "'KinectButton.MainWindow.Timer1' does not contain a definition for 'Enabled'" again... 
    Timer1.Enabled = false; 
} 

好吧,讓我知道你們是否可以幫忙!

回答

1

我認爲這是一個WPF應用程序?我想你會想用Windows.Threading.DispatcherTimer代替

Private timer As New Windows.Threading.DispatcherTimer 

timer.Interval = New TimeSpan(0, 0, 0, 1) 
AddHandler timer.Tick, AddressOf timer_Tick 
timer.Start() 

Private Sub timer_Tick(ByVal Sender As Object, ByVal e As EventArgs) 
    'do something 
End Sub 

啊,我知道它的VB,但它應該很容易轉換

+0

所以我努力嘗試這一點,但它是相當混亂的轉換以C#... – jeddai

+0

http://converter.telerik.com/ – bflosabre91

+0

謝謝!這工作。有點新的Visual Studio和C#哈哈。 – jeddai

相關問題