C# Kinect:如何使用事件处理程序增加变量?

C# Kinect:如何使用事件处理程序增加变量?,c#,kinect,C#,Kinect,我想为Kinect传感器编写一个初始化器类。它收集10帧(仅存在骨架的帧)的关节坐标,然后计算平均位置 此代码具有一个变量frame,该变量在每次找到骨架时递增。此代码不起作用,因为EventHandler似乎没有增加变量 Class Initializer int frame = 0; public Initializer(KinectSensor sensor) { sensor.SkeletonFrameReady += InitSkeletonE

我想为
Kinect
传感器编写一个初始化器类。它收集10帧(仅存在骨架的帧)的关节坐标,然后计算平均位置

此代码具有一个变量
frame
,该变量在每次找到骨架时递增。此代码不起作用,因为
EventHandler
似乎没有增加变量

Class Initializer
    int frame = 0;

    public Initializer(KinectSensor sensor)
    {
        sensor.SkeletonFrameReady += InitSkeletonEvent;
        sensor.SkeletonStream.Enable();
        Console.WriteLine(done);
        if (frame == 100)
        {
            sensor.SkeletonFrameReady -= InitSkeletonEvent;
            //.. other code
        }
    }

    private void InitSkeletonEvent(object sender, SkeletonFrameReadyEventArgs e)
    {
     ....
     frame += 1;
     .... 
    }

如果我在eventhandler中打印出变量,它将递增。但公共初始值设定项方法中的值保持为0

这是因为
如果在事件订阅之后立即调用(frame==100)
,它不会等到处理程序被调用100次

尝试将
if(frame==100)
移动到处理程序

private void InitSkeletonEvent(object sender, SkeletonFrameReadyEventArgs e)
{
    ....
    frame += 1;
    .... 
    if (frame == 100)
    {
        // assign 'sensor' to the private field in 'Initializer' method
        sensor.SkeletonFrameReady -= InitSkeletonEvent;
        //.. other code
    }
}

哪一部分不起作用?如果它不增加变量,则可能不会引发事件。如果我在eventhandler中打印出变量,则它会增加。但是公共初始值设定项方法中的值保持为0。您确定
if(frame==100)
可以工作吗?您确定代码在同一线程上运行吗?使
框架
变量静态是否有帮助?您所说的
公共初始值设定方法中的
是什么意思?这里没有任何其他int变量,它被定义为类成员,因此要么您没有向我们展示代码的某些重要部分,要么您创建了另一个局部框架变量。不要打印,使用调试器。