VC++6.0中,请教DLL使用计时器或者线程实现循环执行某个功能的问题?

VC++6.0中,请教DLL使用计时器或者线程实现循环执行某个功能的问题?,第1张

还是我来回答这个问题吧。

其实,DLL与EXE是非常不同的两类可执行模块,尤其在线程的创建释放等事务上面,而对于在DLLMAIN中创建线程,那则是非常不能原谅的事情,因为此时创建的线程无法正常释放。

不过,要解决你这个问题,其实并不是很难的事情,有如下几步:

1. 运行一个DLL。

2. 在DLL加载完成之后,显示的使用函数启动一个线程。

3. 在这个线程中使用WaitForSingleObject()函数,把等待的超时时间设为你需要的定时时间。

这样,你就可以在WaitForSingleObject函数解阻之后,做你要做的事情了。

下面,是简单的伪码:

volatile bool _g_vbThreadRun = false

static HANDLE _g_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL)

unsigned int fThreadTimer(void* pv)

{

while( _g_vbThreadRun )

{

// the event this function waited must be created in advance.

WaitForSingleObject(_g_hEvent, 3000)// 3 s

// out time

// do something

}

return 0

}

void LaunchTimer()

{

_g_vbThreadRun = true

AfxBeginThread(fThreadTimer, NULL)

}

.子程序 __启动窗口_创建完毕

启动线程 (&计时, , )

.子程序 计时

.局部变量 x, 整数型, 静态

.判断开始 (x ≥ 10)

按钮1.标题 = “确定”

_按钮1_被单击 ()

.默认

x = x + 1

按钮1.标题 = “确定(” + 到文本 (10 - x) + “)”

延时 (1000)

计时 ()

.判断结束

.子程序 _按钮1_被单击

信息框 (“单击了‘确定’按钮!”, 0, )


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

原文地址: https://outofmemory.cn/bake/11863877.html

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

发表评论

登录后才能评论

评论列表(0条)

保存