在主執行緒呼叫
HANDLE hTimer = CreateWaitableTimer(NULL, FALSE, NULL);
LARGE_INTEGER li;
li.QuadPart = 0;
SetWaitableTimer(hTimer , &li, 100, NULL, NULL, FALSE);
執行緒函式
DWORD WINAPI SendDataThread(PVOID pvParam)
{
while(TRUE)
{
DWORD dw = WaitForSingleObjectEx(hTimer , INFINITE, TRUE);
if (dw == WAIT_IO_COMPLETION)
{
return 0;
}
else if (dw == WAIT_OBJECT_0)
{//串口發送
CString str = _T("123456789");
m_MSComm.put_Output(COleVariant(str));
}
}
}
結果看圖片

為什么前倆次的間隔時間不是100毫秒,一直搞不明白
uj5u.com熱心網友回復:
別沉啊....uj5u.com熱心網友回復:
猜測 主執行緒中啟動定時器 到執行緒執行超過了100ms可以試試把 SetWaitableTimer 放到執行緒的while 之前
uj5u.com熱心網友回復:
就是 else if (dw == WAIT_OBJECT_0已經等到了
uj5u.com熱心網友回復:
把 100ms 調大 試試 (如 500ms)uj5u.com熱心網友回復:
windows計時精度≈15msuj5u.com熱心網友回復:
多媒體定時器
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/59540.html
標籤:基礎類
上一篇:有用vc搞過reCaptcha v2驗證碼的嗎?就是將驗證碼顯示出來就行,不用自動過幫忙哦
下一篇:IOCP 記憶體占用問題
