求救,关于多线程处理串口处理数据问题

fang_jb 2000-08-11 11:28:00
我用了一个ms的communication控件,用的是多线程处理方式,在线程中要用控件
的某些函数来读取数据,所以需要一个控件的指针。但是当我把控件的指针声明为
全局时,总是出现错误,而在使用控件句柄,把句柄传递给线程时,好像不能保证在
整个处理过程中句柄的有效性,于是总出现非法操作,程序极其不稳定。想请问各位
专家,做此类的程序用什么比较好,多线程处理时,该注意什么问题,如何解决句柄
的问题。
...全文
152 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
fang_jb 2000-08-13
  • 打赏
  • 举报
回复
各位专家,快帮帮忙呀!
zzh 2000-08-13
  • 打赏
  • 举报
回复
这么困难的问题,只有15分,难怪没什么人回答。
用多线程来读取串口数据时,如果线程是自己申请的,可以把控件的指针传递进去。你可以用传送地址方式来传递控件指针。如下所示:
UINT ReadCommProc(LPVOID pParam)
{
}
你声明一个控件的实例,然后再把该实例的地址传递进去就可以了。
如果对于读串口数据要求比较即时的话,当然使用多线程比较好,如果不是要求及时,可以用响应WM_TIMER消息来处理。每隔多少时间读一次串口数据。在多线程编和中,最主要要注意的问题是一定要记得把线程中的资源释放掉。同时,在程序退出前,一定要记得把线程关闭。如果有什么问题,可以用Bounder Checker来检查错误。这是一个好东东。
fang_jb 2000-08-13
  • 打赏
  • 举报
回复
那么请问,那个 pParam 就是所要传的地址吗?是不是在开始线程的时候把它传进去,
指针在整个程序运行中的地址不会变化吗?传进去之后可以直接使用它来调用控件的函数吗?
比如用 . 或是 -> 操作符?
HHHH 2000-08-13
  • 打赏
  • 举报
回复
各位专家,快帮帮忙呀!

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧