不能在类之间传递数据

本文关键字:数据 之间 不能 | 更新日期: 2023-09-27 18:04:19

我正在使用winform开发基于VS2012的Kinect应用程序。在我尝试了几种方法之后,我仍然不能将值从一个类传递到另一个类。

基本上我有三个类,公共MainWindow(),公共偏FaceTrackingViewer()和公共SkeletonFaceTracker()。最后一个类驻留在FaceTrackingViewer()类中。

在骷髅facetracker(),我有以下内容:

public bool lastFaceTrackSucceeded { get; set; }
internal void OnFrameReady(KinectSensor kinectSensor, ColorImageFormat colorImageFormat, byte[] colorImage, DepthImageFormat depthImageFormat, short[] depthImage, Skeleton skeletonOfInterest)
{
    // something else
    if (this.faceTracker != null)
    {
        this.lastFaceTrackSucceeded = frame.TrackSuccessful; //where it's set to be true.
        //something else
    }
}

我也试着把第一行改成:

public bool lastFaceTrackSucceeded;
public bool LastFaceTrackSucceeded
{
    get { return lastFaceTrackSucceeded; }
    private set { lastFaceTrackSucceeded = value; }
}

我认为这两者是一样的。

在MainWindow()中,我有:
public partial class MainWindow : Window
{
    //some other irrelevant code snippets
    private FaceTrackingViewer.SkeletonFaceTracker skeletonFaceTracker = new FaceTrackingViewer.SkeletonFaceTracker();
    private void button_faceOnly_Click(object sender, RoutedEventArgs e)
    {
        bool faceTrackSucceeded = skeletonFaceTracker.lastFaceTrackSucceeded;
        // if I use the second structure in SkeletonFaceTracker(), it should be:
        // bool faceTrackSucceeded = skeletonFaceTracker.LastFaceTrackSucceeded;
        if (faceTrackSucceeded == true )
        {
             //do something
        }
    }
}

然而,bool faceTrackSucceeded总是false,即使SkeletonFaceTracker()中的lastFaceTrackSucceededLastFaceTrackSucceededtrue。我很困惑,不知道哪里出错了。

请注意,所有的视频处理和面部跟踪动作都发生在FaceTrackingViewer()类中。我只是想传递一些参数和结构给MainWindow()

谢谢

不能在类之间传递数据

首先—我假设您将变量 lastFaceTrackSucceeded公开纯粹是为了测试目的。在您的示例中,定义属性的两种方法在功能上是相同的。

我能想到的唯一一件事是你在SkeletonFaceTracker不同的实例上设置LastFaceTrackSucceeded为true。您没有为我提供足够的代码来确定这一点,但如果您有两个(或更多)实例,那么很容易将它们混淆。