如果声明条件时间检查

时间:2016-01-22 15:05:51

标签: c# timer kinect

我正在尝试将函数添加到我正在编辑的程序中。在这个程序中,我有各种各样的If语句,它们使用Microsoft Kinect设备检查一个人在某个位置的位置,或检查他们的头部运动是什么样的,并根据他们的行为,显示一种反馈。 / p>

__global__ void normalize_fft_result(double *u_device, int n0)
{
    //Use 1d data mapping;
    int tid = blockIdx.x * blockDim.x + threadIdx.x;

    if (tid < n0)
        {
            //Normalize Result
            u_device[tid] = u_device[tid] / float(n0);
        }
}

此刻,图标会根据用户的移动快速打开/关闭。由于这可能会让用户感到困惑,我希望条件在显示之前匹配几秒钟。例如if(pitch> 10)X秒然后显示图标。

不确定最有效的方法是什么,我已经尝试过计时器和任务延迟,但我认为这只会延迟结果而不是检查一段时间内的情况。

3 个答案:

答案 0 :(得分:0)

重新组织主流,使用一些中间队列/ BlockingCollection + GetConsumingEnumerable消费部分在开始处理任何项目之前延迟

非常高级别的伪代码:

BlockingCollection<IResult> blockingQueue ..

// Producer Task
IResult Process(IInputRequest params)
{
   if (...)
}

// Consuming Task
foreach ( .. blockingQueue.GetConsumerable...)
{
}

以适应暂停使用Task.Delay

如果您需要更多详细信息,请与我们联系

答案 1 :(得分:0)

您可以简单地计算成功的支票,直到达到所需的数量

true

这是假设可以从时间估计数量。否则你将不得不计算时间(如果你得到错误的情况就重置它)

您可以使用相同的原则实现降噪,以避免单个错误隐藏图标。

答案 2 :(得分:0)

我会使用Microsoft的Reactive Framework(NuGet“Rx-WinForms”或“Rx-WPF”,具体取决于您的用户界面)。

以下是将鼠标悬停在标签上3秒钟后更改表格背景的示例,但如果鼠标移开则会将其还原。

        var hovers =
            Observable
                .FromEventPattern(h => label1.MouseEnter += h, h => label1.MouseEnter -= h)
                .Select(x => Observable.Timer(TimeSpan.FromSeconds(3.0)))
                .Switch()
                .Select(x => System.Drawing.Color.Red);

        var leaves =
            Observable
                .FromEventPattern(h => label1.MouseLeave += h, h => label1.MouseLeave -= h)
                .Select(x => System.Drawing.Color.White);

        var query = hovers.Merge(leaves);

        var subscription = query.ObserveOn(this).Subscribe(c => this.BackColor = c);