天天看点

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,如需转载请自行联系原作者