打印

问个软件的问题

[复制链接]
1506|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyzyzy407|  楼主 | 2012-7-13 18:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在程序中开辟了一个线程 程序如下:
void CZyUSBCANDlg::OnBtnRecvdata()
{
USBRecvThread0=AfxBeginThread(XferLoop_Recv0,this,THREAD_PRIORITY_HIGHEST,0,CREATE_SUSPENDED,NULL);

USBRecvThread0->m_bAutoDelete=FALSE;

USBRecvThread0->ResumeThread();
//开启此线程
}
之后通过另一个线程CloseThread=AfxBeginThread(Close_Recv_Thread, this,THREAD_PRIORITY_HIGHEST);去关闭 USBRecvThread0线程
CloseThread的线程函数如下:
UINT Close_Recv_Thread( LPVOID params )
{
        CZyUSBCANDlg *dlg = (CZyUSBCANDlg *) params;
        DWORD dw0;
        位置1:dlg->m_can0recvdata.SetWindowText("CAN0接收已停止!!!");

dw0 = WaitForSingleObject(USBRecvThread0->m_hThread,INFINITE);

if(dw0 == WAIT_OBJECT_0)

{

位置2:dlg->m_can0recvdata.SetWindowText("CAN0接收已停止!!!");

delete USBRecvThread0;

}
}
现在出现的问题就是若在位置2dlg->m_can0recvdata.SetWindowText("CAN0接收已停止!!!");文本输出很慢,若在位置1快在网上查了资料说是由于WaitForSingleObject()函数的原因 英文有没有其他方法既能关闭线程又能很快输出文本信息的

相关帖子

沙发
dqyubsh| | 2012-7-14 10:27 | 只看该作者
说说你这么干的原因,干嘛用一个线程去关闭另外一个线程,直接关了不就完事了?

使用特权

评论回复
板凳
zyzyzy407|  楼主 | 2012-7-14 17:08 | 只看该作者
接收线程我是一上来就开辟了 现在必须用一个按钮去关闭这个线程 2# dqyubsh

使用特权

评论回复
地板
dqyubsh| | 2012-7-14 20:54 | 只看该作者
你还是踏踏实实看书吧,别不多说。

使用特权

评论回复
5
zyzyzy407|  楼主 | 2012-7-14 22:18 | 只看该作者
大侠指点一下我哪不对了 我是真心求教啊 您是不是以为我在按钮中关闭另一个线程用的是局部变量 CloseThread 定义为全局的 我只是在响应这个按钮时开启关闭线程 在关闭线程函数中去关闭接收线程(因为我的接收线程m_bAutoDelete 设置为了false)关闭线程的m_bAutoDelete 为true 4# dqyubsh

使用特权

评论回复
6
dqyubsh| | 2012-7-16 11:20 | 只看该作者
我实在看不懂你的问题,拜托你别点名要我回答了,我不欠你的。你把帖子发到CSDN.NET,那的人可以帮到你。

使用特权

评论回复
7
zyzyzy407|  楼主 | 2012-7-16 14:27 | 只看该作者
不过还是谢了 我再csdn上再问问吧
6# dqyubsh

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

208

帖子

0

粉丝