解决sleep延时阻塞程序主线程,造成程序未响应问题方案
来源:互联网 发布:1688进货淘宝卖怎么样 编辑:程序博客网 时间:2024/06/04 19:29
延时是以ms为单位,在计数时要加以注意
1,头文件
//Download by http://www.NewXing.com#ifndef _XSLEEP_H_#define _XSLEEP_H_void XSleep(int nWaitInMSecs);#endif // _XSLEEP_H_
2,源文件
#include <windows.h>// This structure is used internally by the XSleep function struct XSleep_Structure{ int duration; HANDLE eventHandle;};//////////////////////////////////////////////////////////////////////// Function : XSleepThread()// Purpose : The thread which will sleep for the given duration// Returns : DWORD WINAPI// Parameters: // 1. pWaitTime -//////////////////////////////////////////////////////////////////////DWORD WINAPI XSleepThread(LPVOID pWaitTime){ XSleep_Structure *sleep = (XSleep_Structure *)pWaitTime; Sleep(sleep->duration); SetEvent(sleep->eventHandle); return 0;}//////////////////////////////////////////////////////////////////////// Function : XSleep()// Purpose : To make the application sleep for the specified time// duration.// Duration the entire time duration XSleep sleeps, it// keeps processing the message pump, to ensure that all// messages are posted and that the calling thread does// not appear to block all threads!// Returns : none// Parameters: // 1. nWaitInMSecs - Duration to sleep specified in miliseconds.//////////////////////////////////////////////////////////////////////void XSleep(int nWaitInMSecs){ XSleep_Structure sleep; sleep.duration = nWaitInMSecs; sleep.eventHandle = CreateEvent(NULL, TRUE, FALSE, NULL); DWORD threadId; CreateThread(NULL, 0, &XSleepThread, &sleep, 0, &threadId); MSG msg; while(::WaitForSingleObject(sleep.eventHandle, 0) == WAIT_TIMEOUT) { //get and dispatch messages if(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { ::TranslateMessage(&msg); ::DispatchMessage(&msg); } } CloseHandle(sleep.eventHandle);}
0 0
- 解决sleep延时阻塞程序主线程,造成程序未响应问题方案
- 解决iOS程序UI主线程和定时器相互阻塞的问题
- 解决iOS程序UI主线程和定时器相互阻塞的问题
- 解决iOS程序UI主线程和定时器相互阻塞的问题
- 解决iOS程序UI主线程和定时器相互阻塞的问题
- 解决iOS程序UI主线程和定时器相互阻塞的问题
- 黄聪:C#多线程教程(1):BeginInvoke和EndInvoke方法,解决主线程延时Thread.sleep柱塞问题(转)
- Qt延时一段时间不阻塞主线程
- Qt延时一段时间不阻塞主线程
- iOS开发-dispatch_sync阻塞主线程造成死锁
- MFC检测程序未响应
- TerminateThread导致程序未响应
- jadx反编译程序未响应
- Win7漫长的未响应——Win7程序未响应时间太长问题解析
- 解决MBProgressHUD阻塞主线程的方法
- 解决UI主线程阻塞原因
- 解决程序无响应
- C51 延时程序两种方案
- unescape,decodeURI,decodeURIComponent
- 机器学习技法作业三题目16-18
- Shell命令学习(三)
- javascript还是javascript
- unix 网络编程 readn writen readline
- 解决sleep延时阻塞程序主线程,造成程序未响应问题方案
- 【JAVA】关于java中 类.class.getResource("/").getPath()获取路径有空格的问题
- 顺丰微信公众平台是如何提高用户活跃度的?
- jsp与javaBean的使用
- mysql做递归层次查询
- Android RadioButton设置选中时文字和背景颜色同时改变
- 显示 VSync信号
- java高并发,如何解决,什么方式解决
- java.lang.NoClassDefFoundError: android.support.v7.internal.widget.TintManager 解决办法