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变量,它被定义为类成员,因此要么您没有向我们展示代码的某些重要部分,要么您创建了另一个局部框架变量。不要打印,使用调试器。