求一个MFC中的延时功能(急)

求一个MFC中的延时功能(急),第1张

简单的方法就是设置一个全局变量flag = 0;

void OnButton1()

{

if(flag == 0)

{

SetTimer();

return;

}

flag = 0;

killtimer()

int a;

}

OnTimer()

{

flag = 1;

OnButton1();

}

------------------------

只是讲个思路,代码并不全

只是大概表示一下,应该能看明白吧?

语言表达还要麻烦些

首先强调一点:你这里有主线程和和新建线程,它们都存在于你这个程序的进程里,这个问题没涉及主进程、子进程什么的,进程和线程的概念千万别弄混。

即使新建线程没用Sleep函数,界面照样不能即时响应新建线程更新界面的 *** 作。Windows的线程可分为UI线程和工作线程,主线程是UI线程,负责一切响应用户输入和绘制窗口界面的人机交互工作,新建的线程是工作线程,只负责运算,不处理人机交互。所以何时响应界面的更新绘制是由你的主线程决定的,如果主线程还在执行某个函数而没有回到消息循环,就不能更新界面,啥时候那个函数执行完了就可以更新界面了。

防止线程被打断,是线程同步问题,与这里的问题没啥关系。Windows提供了一系列的线程同步API,你可以使用像自旋锁、临界区、Slim读写锁、条件变量这样的用户级线程同步API,也可以使用事件、信号量、互斥量这样的内核同步对象。具体的原理和使用方法不是三言两语能说清楚的,你可以阅读 *** 作系统教材和《Windows核心编程》中讲解多线程的章节。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/12186561.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存