如何在com组件中使用多线程?看看我的要求,能用其他方法解决吗?有好的建议就给分,能解决问题再开贴给200分

0313700000 2003-08-13 12:54:49
描述下需求:
外面调用down函数(组件接口函数),down函数要做的工作为处理串口来的数据请求并给相应回应,对于一次应用来说,串口在不同的时间可能收到多次请求,这多次请求合为一个应用(某一次请求有应用结束标志),这次应用结束,down函数返回
我的想法是在down中启动一个串口接收线程,当应用结束后,杀死线程,如何做?
能跟在普通程序中一样去写多线程吗?
还有,外边调用的时候可能需要等待down函数的返回值,而down函数可能执行时间很长,如果我在down函数里不使用线程而使用while循环,外边程序会死掉吗?
使用while循环能解决上面问题吗?
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
0313700000 2003-08-13
  • 打赏
  • 举报
回复
因为牵涉到串口编程,而且不是读一条数据,可能需要使用线程来监控
如果我在down中开了一个串口接收线程,可能会在线程中处理数据(跟单片机通信是一问一答方式),如果数据出错,如何通知down函数返回错误给外部程序?使用自定义消息?这样的话down函数既要是消息接受函数,又要是接口函数,可以实现吗?
现在脑子全乱了,那位大虾之点一二
0313700000 2003-08-13
  • 打赏
  • 举报
回复
to ldsjlzy(小李)
能否说的详细点
0313700000 2003-08-13
  • 打赏
  • 举报
回复
不是这样,当要开始一个应用,外部程序调用下down,然后等待到这次应用结束,down函数在这次应用中要接受多条(条数不定)串口数据并分析,根据单片机要求回应相应的数据,当结束到单片机应用结束标志时,函数返回
这样down函数中要多次的readfile和writefile,如果失败,则返回错误
lop5712 2003-08-13
  • 打赏
  • 举报
回复
你的意思是说多次调用down,在调用时组件先判断应用是否开始,开始则接收数据,否则打上标志,等到结束标志来时再关闭标志?
如果是这样,那更本没有什么多线程,用一个成员变量记录标志,在down中根据标志执行不同的任务就行了。
如果不是这样请说明
ldsjlzy 2003-08-13
  • 打赏
  • 举报
回复
Down中不要开线程。
用PostMessage()
0313700000 2003-08-13
  • 打赏
  • 举报
回复
我是使用atl写的一个dll
0313700000 2003-08-13
  • 打赏
  • 举报
回复
upupup`

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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