2012-10-21 2 views
1

내 프로젝트에서 Kinect.Toolbox를 사용하고 있습니다. 재생이 끝난 후 메시지를 표시해야합니다. 이 순간을 얻을 수있는 방법이 있습니까?Kinect Toolbox에서 재생 끝을 감지하는 방법

actualy 내 코드는 다음

Stream recordStream = File.OpenRead(@"D:\recorded.FisioKinect"); 
this.Replay = new KinectReplay(recordStream); 
this.Replay.ColorImageFrameReady += replay_ColorImageFrameReady; 
this.Replay.Start(); 

수행하고 replay_ColorImageFrameReady 여기에 재생 객체가 IsFinished라는 속성을 가지고

void replay_ColorImageFrameReady(object sender, ReplayColorImageFrameReadyEventArgs e) 
{ 
    if (this.Replay.IsFinished) 
    { 
     MessageBox.Show("End"); 
    } 
    byte[] pixelData = new byte[e.ColorImageFrame.PixelDataLength]; 
    e.ColorImageFrame.CopyPixelDataTo(pixelData); 
    // Other awesome stuff :) 
} 

주이지만, 재생 경우 replay_ColorImageFrameReady가 발생하지 않습니다 IsFinished이므로 메시지가 표시되지 않습니다.

Kinect.Toolbox의 코드는 TPL을 사용하고 내가, 내가 OnReplayEnd 같은 이벤트를 발생하는 Kinect.Toolbox의 코드를 변경하려면 TPL에 대해 많이 몰라요

당신은 이런 구조를 구축 할 수 있습니다
+0

나는 TPL에 대해서 많이 모른다. Replay.Isfinished가 true로 설정되면 이벤트를 시작하는 데 어떻게 멈 춥니 까? – SimpleSimon

+0

혹시 이것을 생각해 보셨습니까? –

+0

예 @FrankSposaro, 저는 약 1 년이 지난 후에 작성한 코드를 건드리지는 않았지만 그 아이디어는 아래의 답변과 동일합니다. KinectReplay.cs (Kinect Toolbox 패키지에서)를 편집하고 EventHandler를 하나 만들고 코드를 읽고 해당 위치에서 재생이 끝나는 순간을 찾아 이벤트를 트리거하십시오. 따라서 수업 시간에 해당 이벤트를 처리 할 수 ​​있습니다. – Ewerton

답변

0

: 당신의 KinectReplay.cs에서

public event EventHandler Closing; 

protected virtual void OnClosing() 
{ 
    EventHandler Closing = this.Closing; 
    if (Closing != null) 
     Closing(this, EventArgs.Empty); 
} 

를 추가하고 당신이 그것을 사용하여 원하는 목적지를 트리거합니다.

replay.Closing += new EventHandler(replayMediaEnded); 
+0

KinectReplay에서 닫기 메서드가 표시되지 않습니다. –

관련 문제