1

我在我的项目中使用 Kinect.Toolbox,我需要在回放结束后显示一条消息。有没有办法得到这一刻?

实际上我的代码执行以下操作

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

replay_ColorImageFrameReady 在这里

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 对象有一个名为 IsFinished 的属性,但如果 R​​eplay IsFinished,则不会引发 replay_ColorImageFrameReady,因此永远不会显示消息。

Kinect.Toolbox 的代码使用 TPL,我对 TPL 不太了解,我想更改 Kinect.Toolbox 的代码以触发像 OnReplayEnd 这样的事件

4

1 回答 1

0

You can build a structure like this:

In your KinectReplay.cs

add

public event EventHandler Closing;

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

and trigger it wherever you want to use it.

replay.Closing += new EventHandler(replayMediaEnded);
于 2013-04-27T21:53:14.030 回答