天天看點

VC中的延時

VC++中不占CPU的延時方法:

<code>int</code> <code>CtestThreadDlg::DelayTime(</code><code>int</code> <code>m)</code><code>//參數為延時秒數</code>

<code>{</code>

<code>    </code><code>HANDLE</code> <code>hTimer = NULL;</code>

<code>    </code><code>HANDLE</code> <code>hT[2];</code>

<code>    </code><code>LARGE_INTEGER liDueTime;</code>

<code>    </code><code>liDueTime.QuadPart = m *(-100000000) / 10;</code>

<code>    </code><code>hTimer = CreateWaitableTimer(NULL, TRUE, _T(</code><code>"theTimer"</code><code>));</code>

<code>    </code><code>hT[0] = hTimer;</code>

<code>    </code><code>if</code> <code>(!hTimer)</code>

<code>    </code><code>{</code>

<code>        </code><code>return</code> <code>1;</code>

<code>    </code><code>}</code>

<code>    </code><code>if</code> <code>(!SetWaitableTimer(hTimer, &amp;liDueTime, 0, NULL, NULL, FALSE))</code>

<code>        </code><code>CloseHandle(hTimer);</code>

<code>        </code><code>return</code> <code>2;</code>

<code>    </code><code>DWORD</code> <code>lBusy;</code>

<code>    </code><code>do</code>

<code>        </code><code>lBusy = MsgWaitForMultipleObjects(1, hT, FALSE, 0xffff, QS_ALLINPUT);</code>

<code>        </code><code>const</code> <code>MSG msg;</code>

<code>        </code><code>GetMessage((LPMSG) &amp;msg, NULL, 0, 0);</code>

<code>        </code><code>DispatchMessage(&amp;msg);</code>

<code>    </code><code>} </code><code>while</code> <code>(lBusy == (WAIT_OBJECT_0 + 1));</code>

<code>    </code><code>CloseHandle(hTimer);</code>

<code>    </code><code>return</code> <code>0;</code>

<code>}</code>

<code></code>

本文轉自Chinayu201451CTO部落格,原文連結: http://blog.51cto.com/9233403/1975206,如需轉載請自行聯系原作者

繼續閱讀