C# 向Kinect的多源框架添加延迟

C# 向Kinect的多源框架添加延迟,c#,wpf,kinect-sdk,C#,Wpf,Kinect Sdk,我在一个与Kinect、MSSDK2、C#和WPF控件合作的项目中工作 我将事件处理程序MultisourceFrameArrized方法设置为读取所有帧类型。根据MS文档,当一帧从Kinect到达时,这将运行,并且大约为30 FPS 我想限制这种运行行为(延迟),以减少捕获,例如5 FPS、10 FPS 我尝试使用Task.Delay(ms)和Thread.Sleep(ms)(as)。如果这个问题很愚蠢,我很抱歉,但我还不能解决它。保留一个计数器frameCount,并通过忽略帧来保持较低的f

我在一个与Kinect、MSSDK2、C#和WPF控件合作的项目中工作

我将事件处理程序MultisourceFrameArrized方法设置为读取所有帧类型。根据MS文档,当一帧从Kinect到达时,这将运行,并且大约为30 FPS

我想限制这种运行行为(延迟),以减少捕获,例如5 FPS、10 FPS


我尝试使用Task.Delay(ms)和Thread.Sleep(ms)(as)。如果这个问题很愚蠢,我很抱歉,但我还不能解决它。

保留一个计数器
frameCount
,并通过忽略帧来保持较低的fps

static void msfr_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
{
    frameCount++;
    if (frameCount % 6 != 0) return;

    //  Do whatever you want cause you are pirate ... :D
}

如果您希望花一些时间处理当前帧,然后请求最新帧,则可以订阅取消订阅MultisourceFrameArrized

所以,你应该这样做

    private void msfr_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
    {
        _reader.MultiSourceFrameArrived -= msfr_MultiSourceFrameArrived;

        /***********************Process your frames here**********************/

        _reader.MultiSourceFrameArrived += msfr_MultiSourceFrameArrived;
    }

一个简单但强大的解决方案,谢谢Rafaf Tahsin。