|
以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 请问一个启动线程的问题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=31225) |
|
-- 作者:qianqiuxue -- 发布时间:4/25/2006 12:54:00 PM -- 请问一个启动线程的问题 我用VC编写的串口烧写程序,烧写时点击它没有响应。 于是我就用AfxBeginThread又启动了一个线程,想把烧写过程转到后台,在烧写时还可以点其它按钮 可是改了以后点击其它按钮还是没响应,请问是什么原因啊 还有其它办法吗? |
|
-- 作者:卷积内核 -- 发布时间:4/26/2006 11:31:00 AM -- 线程中while判断中加上 Sleep(100); 就好了,试试看. |
|
-- 作者:qianqiuxue -- 发布时间:4/26/2006 2:11:00 PM -- 谢谢了啊,可是烧写没有用循环,直接通过 BOOL fState=WriteFile(h_com,sz,szLength,&nLength,&m_osWrite; 来实现的 就是选择好所有要烧写的文件,点击“烧写”按钮,就调用一个发送数据的函数onsdcommand 我在这个函数里用Afxbeginthread启动一个线程,下面是线程的代码 UINT CComDlg::CommWriteProc(LPVOID pparam) { COMSTAT ComStat; ULONG nLength=0; //CString m_send1; //m_send1=m_send; // UpdateData(true); ULONG szLength = m_send.GetLength(); char *sz = new char[szLength]; if(sz==NULL) return 0; memcpy(sz,m_send.GetBuffer(szLength),szLength); DWORD dwErrorFlags; ClearCommError(h_com,&dwErrorFlags,&ComStat);//清除串口错误*/ BOOL fState=WriteFile(h_com,sz,szLength,&nLength,&m_osWrite);//数据发送 if(!fState) |
|
-- 作者:卷积内核 -- 发布时间:4/27/2006 9:03:00 AM -- 那这里必须要线程吗?一般线程是用来实时循环检测某一状态或者并行来使用. |
|
-- 作者:qianqiuxue -- 发布时间:4/28/2006 8:49:00 AM -- 是啊,就是希望调用烧写函数时,它能再启动一个线程专门完成烧写,这样就可以把烧写转到后台,主线程就可以做其它事情,程序就不会死在那里了 |
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |