C 延時函式 非Sleep

2021-06-16 13:13:01 字數 882 閱讀 2966

在很多時候,我們的程式,在執行下一步操作之前,需要等待上一步的執行完成,這種延時等待的方式在非同步操作,或者是利用訊息迴圈機制通訊的程式中,最為體現的明顯。

舉個api的例子:

我們自己的程式是a,需要利用api結合windows 訊息機制,控制外部程式b;

a向b傳送乙個訊息,b去執行,此時a需要等待b執行完後,根據b的執行結果,再次向b傳送下乙個訊息

上面的例子,是個很典型的延時應用。

說到延時,大家可能第一反應,就是 sleep 。

先不談 sleep 延時的精度如何,sleep 的乙個致命的弱點,就是 sleep 的過程中,程序是不能響應外部操作的,變成了假死狀態,這樣的話,乙個是使用者體驗很差,再者,使用者想中途終止也不行,只能幹等,或者強制 kill 掉程式。

所以,此時的sleep是不可取的。我們需要的,是乙個可以繼續響應操作,而且精度高的延時函式。

下面,我們自己實現乙個:

1.引用namespace

using system.runtime.interopservices;

2.引用api函式

[dllimport("kernel32.dll")]

private static extern uint gettickcount();

3.宣告延時函式

private void delay(uint ms)

}

4.呼叫delay函式(其中ms為毫秒)

private void button4_click(object sender, eventargs e)

C 延時函式 非Sleep

在很多時候,我們的程式,在執行下一步操作之前,需要等待上一步的執行完成,這種延時等待的方式在非同步操作,或者是利用訊息迴圈機制通訊的程式中,最為體現的明顯。舉個api的例子 我們自己的程式是a,需要利用api結合windows 訊息機制,控制外部程式b a向b傳送乙個訊息,b去執行,此時a需要等待b...

C 非獨佔延時函式 非Sleep

在c 視窗程式中,如果在主線程裡呼叫sleep,在sleep完成之前,介面呈現出假死狀態,不能響應任何操作 下邊實現的是非獨占性延時函式,延時過時中介面仍可響應訊息 public static void delay int millisecond 關於math.abs environment.tic...

再論sleep延時

在做通訊專案的時候需要處理不同執行緒的資料流匹配問題,在加入sleep second 延時函式後發現表現有點奇怪,仔細查閱api說明才了解到linux下sleep函式和windows下的不一樣!windows的sleep是毫秒延時,linux下是秒級延時,而且輸入浮點數後是向下取整 秒級延時函式,輸...