如何做一个在后台一直运行的dll,直到装载它的进程退出。
dll编程方面很少涉足,只做过简单的就是将某些功能放到dll的一个导出函数中。
目前想做个接口,举个例子:
我想让某个dll(我自己写)从串口不断的取数,解包,然后通知装载它的进程进行处理。
问题是:
如果保持这个dll不停的从串口取数,是不是写个无限循环,在这个无限循环中读串口?
当进程退出时,dll如何知道并从无限循环中跳出?
请问我的方法对不对,还有什么其它的方法,请列举一二,谢谢!
问题可能比较初级,因为我现在还在入门。
问题点数:30、回复次数:5Top
1 楼arkuka()回复于 2005-02-04 22:25:04 得分 15
让DLL线程在每次循环之前去判断主线程中的一个标记即可,主线程在退出前设置标记位,然后等待DLL线程的退出信号,DLL线程在下次循环开始的时候判断主线程的标记,并在退出前向主线程发信号,注意,主线程的等待要有超时,否则比较危险。
DLL:
ThreadProc()
{
CreateEvent("exit event");
while(pHost->m_bContinue)
{
Do();
}
SetEvent("exit event");
}
Main:
OnExit()
{
m_bContinue = FALSE;
if(WaitForSingleObject("exit event",m_nWaitExitDur) == object_0)
{
//正常退出
}
else
{
//强行结束DLL线程,非正常退出
}
}
其中使用的具体函数名字和参数什么的记不清了,结构应该没有什么问题吧,你可以尝试一下Top
2 楼alphapiao(奉旨灌水钦差)回复于 2005-02-05 10:34:30 得分 5
可以在dll写一个退出函数,主线程要dll退出时调用一下它就行了.
Top
3 楼Rogeremail(绿色环保-菜青虫)回复于 2005-02-07 15:21:20 得分 5
我觉得直接把DLL插到一个系统进程或写个服务来装载DLL要“正宗”些,当然要在win2k以上.Top
4 楼Rogeremail(绿色环保-菜青虫)回复于 2005-02-07 15:23:29 得分 0
不好意思,上一贴发错地方了…Top
5 楼wangjia184(我就是传说中的。。。。。。SB)回复于 2005-02-12 15:26:58 得分 5
做成COM吧Top




