c#延时函数非sleep

Twang Twang     2022-07-31     457

关键词:

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

c#延时处理或者暂停执行

...ck(objectsender,EventArgse)...........;//执行代码delay(second);//插入延时函数...........;//执行代码求解这个delay(second)要怎么编写或者说是用一种什么样的方式来实现延时功能?thread.sleep()是不可行的,因为这个time1_tick一直存在,用sleep()函... 查看详情

c#中怎样建立定时器?用以替代thread.sleep(),克服sleep延时不精确的问题。

thread.sleep()返回可是在指定时间前后几百毫秒内发生,很影响系统的稳定。怎样建立一个新的定时器,改定时器指定时间可以设定,定时精度在毫秒级别,最好不要太消耗资源,能让线程短时暂停就更好了。参考技术A推荐使... 查看详情

linux内核中的睡眠函数*delay*sleep(代码片段)

...文   二、使用环境1、使用环境的不同,选择不同的延时2、驱动机制不同3、内核中的计算函数执行的函数三、实测两类函数的延时以及原因1、测试系统中的睡眠函数2、输出结果3、输出结果现象与解释内核中的睡眠、延时... 查看详情

linux内核中的睡眠函数*delay*sleep(代码片段)

...文   二、使用环境1、使用环境的不同,选择不同的延时2、驱动机制不同3、内核中的计算函数执行的函数三、实测两类函数的延时以及原因1、测试系统中的睡眠函数2、输出结果3、输出结果现象与解释内核中的睡眠、延时... 查看详情

linux内核中的睡眠函数*delay*sleep(代码片段)

...文   二、使用环境1、使用环境的不同,选择不同的延时2、驱动机制不同3、内核中的计算函数执行的函数三、实测两类函数的延时以及原因1、测试系统中的睡眠函数2、输出结果3、输出结果现象与解释内核中的睡眠、延时... 查看详情

cocoscreator有关延时,sleep

...leep()等等,但是都不能用。最后发现了一个函数可以作为延时用: 查看详情

c++睡眠延时函数sleep()usleep()(windows.hunistd.h)(代码片段)

c++标准库并不支持睡眠函数(1).windows下支持,需要引入头文件windows.h,切记Sleep首字母大写#include<iostream>#include<windows.h>usingnamespacestd;voidmain()//睡眠5秒再输出Sleep(5000);std::cout<<"Hi,Gril!" 查看详情

c语言怎么写延时函数,精确到毫秒

要用上GetTickCount()的哦麻烦加点注释程序运行到有延时函数的地方,卡住一段时间,才能进行下去参考技术A唯有Sleep函数,只有Sleep函数参数是用毫秒,比如1000毫秒等于1秒。 参考技术Bvoiddelay(unsignedintms)unsignedintbegin=GetTickCount();while(... 查看详情

c#准确延时函数(代码片段)

最近一段时间用C#写了一个上位机,由于需要用到延时函数,所以给大家分享一个准确延时函数大家在网上一定找到过这个延时函数:用是能用,但是有一个致命问题,就是大于一分钟的延时会陷入无限死循环... 查看详情

c#准确延时函数(代码片段)

最近一段时间用C#写了一个上位机,由于需要用到延时函数,所以给大家分享一个准确延时函数大家在网上一定找到过这个延时函数:用是能用,但是有一个致命问题,就是大于一分钟的延时会陷入无限死循环... 查看详情

c#准确延时函数(代码片段)

最近一段时间用C#写了一个上位机,由于需要用到延时函数,所以给大家分享一个准确延时函数大家在网上一定找到过这个延时函数:用是能用,但是有一个致命问题,就是大于一分钟的延时会陷入无限死循环... 查看详情

python如何微秒级延时?

貌似最小的延时就是time.sleep(0.001)请问如何实现微秒级的延时?最好别用第三方库Python中的sleep函数可以传小数进去,就可以进行毫秒级的延时了,代码如下:#例1:循环输出休眠1秒importtimei=1whilei<=3:printi#输出ii+=1time.sleep(1)#休... 查看详情

c++怎么能间隔一定的时间执行指定的代码

...来说的.并不是执行一个暂停一下在执行另一个.可以使用延时函数。在需要间隔的地方执行延时函数可以使系统暂停一段时间,时间由延时函数的参数指定。从而达到要求的目的。延时函数不是C库函数,所以因编译器不同而有所... 查看详情

c#怎么实现精确延时

参考技术A......延时?对吧先在命令空间添加:usingSystem.ThreadLingusingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Threading;namespaceConsoleApplication1classProgramstaticvoidMain(string[]args)Threads=newThread(方... 查看详情

PInvokeStackImbalance C# 调用非托管 C++ 函数

】PInvokeStackImbalanceC#调用非托管C++函数【英文标题】:PInvokeStackImbalanceC#calltounmanagedC++function【发布时间】:2011-01-2407:51:24【问题描述】:切换到VS2010后,托管调试助手显示一个错误,即从C#应用程序调用非托管C++函数导致堆栈不... 查看详情

从非托管 c++ 调用托管 c# 函数

】从非托管c++调用托管c#函数【英文标题】:callingmanagedc#functionsfromunmanagedc++【发布时间】:2010-04-2709:17:58【问题描述】:如何【问题讨论】:见***.com/questions/1802929/…【参考方案1】:或者使用projectofmine允许C#创建非托管导出。... 查看详情

从非托管 c++ 调用托管 c# 函数

】从非托管c++调用托管c#函数【英文标题】:callingmanagedc#functionsfromunmanagedc++【发布时间】:2010-04-2709:17:58【问题描述】:如何【问题讨论】:见***.com/questions/1802929/…【参考方案1】:或者使用projectofmine允许C#创建非托管导出。... 查看详情

如何将两个非托管 C++ 函数包装成两个托管 C# 函数?

】如何将两个非托管C++函数包装成两个托管C#函数?【英文标题】:HowtowraptwounmanagedC++functionsintotwomanagedC#functions?【发布时间】:2010-05-0601:46:25【问题描述】:我有两个非托管C++函数,Compress和Decompress。参数和返回如下:unsignedcha... 查看详情