1

我需要对 WPF 窗口中两个 GUI 事件之间的时间间隔进行计时 - 特别是Button_Click事件和Canvas_MouseLeftButtonDown事件之间的时间。我正在使用对 a 的调用来System.Diagnostics.Stopwatch测量此间隔。虽然 Stopwatch 类在内部非常精确(与较低分辨率的替代品相反DateTime.Now),但我假设 GUI 引发的事件之间存在相对较大的粒度,按帧速率的倒数顺序排列(但在人类规模)但是对于非常快速的点击(我能管理的最好显然是 50 毫秒),假设的 GUI 事件延迟可能很重要。有谁知道这个粒度是什么,只是为了建立误差线和有效数字?

4

1 回答 1

1

您可以设置一些使用SendInput将鼠标点击发送到 GUI 的东西。就像是:

Initialize manual reset event
Start stopwatch_1
Send mouse click
wait for event
Get elapsed time of stopwatch_1

在您的事件处理程序中:

Get elapsed time of stopwatch_1
set event

基本上,通过单击一个按钮开始测试,让它延迟几秒钟,以便您可以将鼠标悬停在要单击的按钮上。

读取事件处理程序中的时间将告诉您在收到点击和执行处理程序之间有多少延迟。最终读取是总经过的时间,因为事件处理程序不做任何事情,所以应该是总开销。减去处理事件所需的时间。

请注意,您不想在 GUI 线程上等待。您需要调用的方法SendInput在单独的线程上执行。

于 2011-07-30T17:53:59.777 回答