我試圖捕獲KeyDown
和KeyUp
之間的時間間隔,這兩個事件之間的經過時間對於每個鍵入的字符,我使用Stopwatch.GetTimestamp()
,因爲我需要獲取高分辨率時間戳,如下面的編碼所示,並且我想知道這是否是以毫秒爲單位的時間的正確方程:測量keydown和keyup事件之間的時間
int timeStampInMiliseconds = Convert.ToInt32(elapsedTicks * 1000000/Stopwatch.Frequency);
獲取以毫秒爲單位的時間。
由於計時結果沒有顯示任何一致性,並且可能會在這兩個事件之間達到5秒,這是不現實的!
public partial class Form1 : Form
{
long timeStamp;
long initialTimeStamp;
public Form1()
{
InitializeComponent();
Stopwatch stopWatch = new Stopwatch();
// Uses the second Core or Processor for the Test
// Prevents "Normal" processes from interrupting Threads
// Prevents "Normal" Threads
initialize();
}
public void initialize()
{
//
}
public void textBox1_KeyDown(object sender, KeyEventArgs e)
{
initialTimeStamp = Stopwatch.GetTimestamp();
}
public void textBox1_KeyUp(object sender, KeyEventArgs e)
{
timeStamp = Stopwatch.GetTimestamp();
long elapsedTicks = timeStamp -initialTimeStamp;
int timeStampInMiliseconds = Convert.ToInt32(elapsedTicks * 1000000/Stopwatch.Frequency);
}
}
真的很感謝您的幫助。
請記住,在同一時間按兩個鍵或使用修飾鍵會打破這一點。例如,按住Control鍵,然後按另一個鍵,然後釋放控制權。 – caesay
除了caesay的評論 - 調試使得結果更加有趣,因爲如果您逐步完成代碼,則可能會導致大量延遲事件。 –
@ caesay @Alexei Levenkov:謝謝您的回答,您能否提出解決方案。謝謝 – Zaid