2015-12-03 12 views
1

Я использую kinect SDK 1.7 (так как только тот работает на выигрыше 7).Невозможно остановить камеру kinect замерзает мое приложение

Моя программа отлично работает, я могу изменять режимы видео для глубины и цвета без ошибок. Но это не так, когда я хочу закрыть свою программу, используя верхнюю правую красную кнопку закрытия основной формы. На самом деле это швы, даже если я установил точку останова в деактивирующем датчике, никогда не срабатывал ??

Я написал код ниже без успеха.

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(). Снятие этих стоп(); и распоряжаться(); команды, позволили закрыть приложение, хотя для закрытия примерно 10 секунд или около того, что швы странные для меня

Итак, не закрывая эту камеру, она закрывается .. странно.

Я не думаю, что это рекомендуемый способ, поэтому, если кто-то знает, как правильно это сделать, я все уши.

Смежные вопросы