我正在尝试将函数添加到我正在编辑的程序中。在这个程序中,我有各种各样的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秒然后显示图标。
不确定最有效的方法是什么,我已经尝试过计时器和任务延迟,但我认为这只会延迟结果而不是检查一段时间内的情况。
答案 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);