2015-12-03 71 views
1

我使用的是kinect SDK 1.7(因爲只有那個可以在win 7上運行)。無法停止kinect相機凍結我的應用程序

我的程序工作正常,我可以改變視頻模式的深度和顏色沒有錯誤。但是當我想通過使用右上角的redcross關閉主窗體角落按鈕來關閉我的程序時出錯了。事實上,即使我在Deactivate Sensor中設置斷點,它也會接縫,..它從來沒有觸發過?

我寫下面的代碼沒有成功。

private void DeActivateSensor() 
    { 
     if (kinectSensor != null) 
     { 
      if (kinectSensor.SkeletonStream.IsEnabled) { kinectSensor.SkeletonStream.Disable();} 
      if (kinectSensor.ColorStream.IsEnabled) { kinectSensor.ColorStream.Disable(); } 
      if (kinectSensor.DepthStream.IsEnabled) {kinectSensor.DepthStream.Disable();} 


      Thread.Sleep(1000); 

      kinectSensor.ColorFrameReady -= new EventHandler<ColorImageFrameReadyEventArgs>(kinectSensor_ColorFrameReady); 
      kinectSensor.DepthFrameReady -= new EventHandler<DepthImageFrameReadyEventArgs>(kinectSensor_DepthFrameReady); 
      // since i dont have skelleton events i dont need to repeat that for it 
      try 
      { 
       if (kinectSensor.IsRunning) { kinectSensor.Stop(); } 
      } 
      catch 
      { 
       Debug.WriteLine("unknown Exception "); 
      } 

      Thread.Sleep(1000); 
      if (kinectSensor != null) { kinectSensor.Dispose(); } 
     } 
    } 


    private void MainForm_Load(object sender, EventArgs e) 
    { 
     DeActivateSensor(); 

    } 

    private void MainForm_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     DeActivateSensor(); 
    } 

回答

0

這很奇怪。 我不認爲這是一個很好的答案。 它更多的是一個骯髒的編碼解決方法。

使用vs2015調試。 事實證明,我正確關閉活動流後。 並正確註銷我的新顏色和新的深度幀事件。 然後,將應用程序縫合以凍結kinectsensor.stop()和kinectsensor.Dispose()。 刪除這些stop();並處置();命令,允許應用程序關閉,雖然它需要相當長的關閉說10秒左右,這接縫奇怪

因此,通過不關閉此相機,它關閉..奇怪。

我不認爲這是推薦的方式,所以如果有人知道如何做到這一點正確的方式我耳熟能詳。