C#延时函数 非Sleep
来源:互联网 发布:js鼠标右键弹出菜单 编辑:程序博客网 时间:2024/06/06 01:56
在很多时候,我们的程序,在执行下一步操作之前,需要等待上一步的执行完成,这种延时等待的方式在异步操作,或者是利用消息循环机制通信的程序中,最为体现的明显。
举个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) { uint start = GetTickCount(); while (GetTickCount() - start < ms) { Application.DoEvents(); Console.WriteLine((GetTickCount() - start).ToString()); } }
4.调用Delay函数(其中ms为毫秒)
private void button4_Click(object sender, EventArgs e) { Delay(5000);//等待5秒 }
- C# 延时函数 非Sleep
- C#延时函数 非Sleep
- C#延时函数 非Sleep
- QT延时函数sleep
- boost延时函数sleep
- Ring0中的Sleep延时函数
- Qt自定义sleep延时函数
- VB中延时功能与Sleep函数
- Linux Shell中的延时函数 sleep
- Linux Shell中的延时函数 sleep
- 延时函数sleep和delay的区别
- C# 延时函数
- C#中的延时函数积累
- 延时函数delay与sleep有什么区别呢?
- C语言等待一秒,延时函数sleep()
- 51单片机非精确延时函数
- 编程笔记 非阻塞式延时函数
- python 延时sleep
- Erlang 编辑器 eclipse 常用快捷键
- UUID.randomUUID()方法介绍
- 关于百度API地图的引用
- Struts1.2国际化实例
- 解决firefox下载卡死的问题
- C#延时函数 非Sleep
- 解决eclipse中overlaps the location of another project: 'xxxx'
- 7月16号C#基本数据类型
- Recovery代码分析之一
- redmine的一键部署
- C#部分关键字归纳
- php中 curl, fsockopen ,file_get_contents 三个函数
- Android学习-应用程序管理
- C++的位运算