将实时计算值打印到主窗口

时间:2014-12-29 07:06:43

标签: c# visual-studio-2013 kinect-interaction

我正在使用C#

在Visual Studio 2013中编写应用程序

我有一些来自Kinect的实时值,我处理这些值并将它们保存在浮点中。

大约有8个值

我需要在窗口上打印这些值 我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您只需要在窗口上显示不断变化的浮点数,则可以使用Label。但随着值的频繁变化,这可能会导致GUI挂起。为了防止这种情况,我有一个扩展类

public static class CrossThreadExtensions
{
    public static void PerformSafely(this Control target, Action action)
    {
        if (target.InvokeRequired)
        {
            target.Invoke(action);
        }
        else
        {
            action();
        }
    }

    public static void PerformSafely<T1>(this Control target, Action<T1> action, T1 parameter)
    {
        if (target.InvokeRequired)
        {
            target.Invoke(action, parameter);
        }
        else
        {
            action(parameter);
        }
    }

    public static void PerformSafely<T1, T2>(this Control target, Action<T1, T2> action, T1 p1, T2 p2)
    {
        if (target.InvokeRequired)
        {
            target.Invoke(action, p1, p2);
        }
        else
        {
            action(p1, p2);
        }
    }
}

并以这种方式使用

关于价值变动事件:

Thread erThread = new Thread(delegate()
{
    label1.PerformSafely(() => label1.Text = _YourFloatingPointValue.ToString());
});
erThread.Start();
erThread.IsBackground = true;