zoukankan      html  css  js  c++  java
  • C# 延时函数 非Sleep

    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是不可取的。 我们需要的,是一个可以继续响应操作,而且精度高的延时函数。

    就可以使用上面的示例了。

    参:suzilong11的专栏 C# 延时函数 非Sleep

  • 相关阅读:
    IO
    NIO
    Nginx(六)之负载均衡策略
    Nginx(五)之事件相关实现
    Nginx(四)之模块功能
    Nginx(三)之配置指令与内部运行逻辑
    Nginx(二)之数据结构
    Nginx(一)之整体架构框架
    HTTP(二)Web安全
    gson哪些符号html转义,Gson-特殊字符的转义-disableHtmlEscaping()
  • 原文地址:https://www.cnblogs.com/wangfuyou/p/5809625.html
Copyright © 2011-2022 走看看