1.示例:
using System.Runtime.InteropServices; [DllImport("kernel32.dll")] static extern uint GetTickCount(); static void Delay(uint ms) { uint start = GetTickCount(); while (GetTickCount() - start < ms) { System.Windows.Forms.Application.DoEvents(); } }
2.使用說明:
在很多時候,我們的程序,在執行下一步操作之前,需要等待上一步的執行完成,這種延時等待的方式在異步操作,或者是利用消息循環機制通信的程序中,最為體現的明顯。
3.應用場景:
舉個API的例子:
我們自己的程序是A,需要利用API結合Windows 消息機制,控制外部程序B;
A向B發送一個消息,B去執行,此時A需要等待B執行完后,根據B的執行結果,再次向B發送下一個消息
上面的例子,是個很典型的延時應用。
說到延時,大家可能第一反應,就是 Sleep 。
先不談 Sleep 延時的精度如何,Sleep 的一個致命的弱點,就是 Sleep 的過程中,進程是不能響應外部操作的,變成了假死狀態,這樣的話,一個是用戶體驗很差,再者,用戶想中途終止也不行,只能干等,或者強制 KILL 掉程序。
所以,此時的Sleep是不可取的。 我們需要的,是一個可以繼續響應操作,而且精度高的延時函數。
就可以使用上面的示例了。
