时间:2010-11-18 01:36:03

标签: c# .net wpf multithreading real-time

我正在编写一个应用程序[net / wpf / c#],用于衡量用户在听到单词后点击(响应)的速度。它被称为听觉处理速度测试(PST),人的平均速度约为70-140ms。为了了解生成的事件的精确度,我写了以下内容。

public partial class MainWindow : Window
{
    System.Diagnostics.Stopwatch w = new System.Diagnostics.Stopwatch();

    public MainWindow () { InitializeComponent(); }

    private void textBlock1_PreviewMouseDown (object sender, MouseButtonEventArgs e)
    {
        e.Handled = true;
        w.Stop();
        System.Diagnostics.Debug.WriteLine(w.ElapsedMilliseconds);
        w.Reset(); w.Start();
    }

    private void Grid_KeyDown (object sender, KeyEventArgs e)
    {
        e.Handled = true;
        w.Stop();
        System.Diagnostics.Debug.WriteLine(w.ElapsedMilliseconds);
        w.Reset(); w.Start();
    }
}

private void Application_Startup (object sender, StartupEventArgs e)
{
    Process thisProc = Process.GetCurrentProcess();
    thisProc.PriorityClass = ProcessPriorityClass.RealTime;
    ProcessThreadCollection myThreads = thisProc.Threads;

    foreach (ProcessThread pt in myThreads) {
        pt.PriorityLevel = ThreadPriorityLevel.TimeCritical;
    }
}

我点击的最快速度大约是100毫秒,如果按住键盘键然后按下,我的响应时间会缩短到30毫秒。有什么方法可以让它更快吗? TIA

1 个答案:

答案 0 :(得分:1)

您是否考虑过通过DirectInput轮询鼠标。