读书人

新手请问 DlL里创建进程的有关问题

发布时间: 2012-02-07 17:45:36 作者: rapoo

新手请教 DlL里创建进程的问题
刚开始做了一个DLL给客户,只开了一个线程,专门收发COM口的数据,现在客户不希望自己循环调用DLL里的函数实现接收COM口消息的功能,要求DLL能抛出一个windows消息告知应用程序COM口有信息传过来并且把数据传给应用程序,相当于DLL实现不断循环接收COM口的消息。但是当应用程序主动发送数据的时候,要求DLL能停止监听数据,让应用程序能收到COM口的返回值。
我的思路是另外创建一个线程,不断监听COM口的数据,当有数据上来的时候抛出windows消息(带参数),当应用程序往下发数据的时候停止监听,返回值成功返回后继续监听,
问题来了,在同一个.CPP文件里,怎么创建多个线程(程序不是只能一条条执行的吗?如果我做了一个死循环一直在监听数据,程序应该不会继续往下走了吧?)怎么才能一边循环监听COM口的数据一边做其他事情呢? 就好像在C++Builder 里创建一个时钟一样,一直在运行,但是有不妨碍其他代码的运行

[解决办法]
帮顶, 我听了都汗颜 ,这还新手问题

探讨
刚开始做了一个DLL给客户,只开了一个线程,专门收发COM口的数据,现在客户不希望自己循环调用DLL里的函数实现接收COM口消息的功能,要求DLL能抛出一个windows消息告知应用程序COM口有信息传过来并且把数据传给应用程序,相当于DLL实现不断循环接收COM口的消息。但是当应用程序主动发送数据的时候,要求DLL能停止监听数据,让应用程序能收到COM口的返回值。
我的思路是另外创建一个线程,……

[解决办法]
汗... 你的问题看得我好头痛.
你到底想要解决什么...
如果是并行运行的话,就是线程同步的问题,至于终止线程可以在创建时保存下线程的句柄,需要时终止它.
如果是要DLL发消息的话,也可以在调用DLL时把窗口的句柄传递过去,直接用sendmessage.

[解决办法]
创建一个线程,在线程循环函数内,增加一个判断变量,如果变量为真,则进入监听循环,如果为假则不进入监听循环,这个判断变量可以由DLL进程进行修改。
[解决办法]
创建线程:AfxBeginThread
创建定时器:SetTimer(在窗口程序中)、
CreateWaitableTimer系列,在窗口程序中或工作线程中都可以。

读书人网 >VC/MFC

热点推荐