线程不响应的问题

zyc_lc 2009-03-18 03:09:36
窗体线程响应:
CWinThread *pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread)); 一切正常。

但是在CWinThread *pThread=AfxBeginThread(RUNTIME_CLASS(CUIThread));后加上一些内容就不行了。

内容为:
1、对一文本文件的读写操作
2、上传某一个文件到服务器上(SFTP)

我本意是想把整个上传的过程在CUIThreadDlg上的进度条和状态框中表示出来。
但是加了1和2功能后,CUIThreadDlg就不再响应,至少没有弹出来显示。

求救,谢谢
...全文
75 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyc_lc 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zyc_lc 的回复:]
引用 2 楼 cnzdgs 的回复:
把界面和功能分开在两个线程中处理,否则在长时间执行功能时没法响应消息。

老大,我按我的理解写为:
void CUploadFilesDlg::UploadFatFiles()
{
CWinThread *pThreadS=AfxBeginThread(RUNTIME_CLASS(CUploadDisplay));

CWinThread *pThreadD = AfxBeginThread(GetAndUploadFileThread,this);

}


不过CUploadDisplay还是没有显示出窗体来,class CUploadDisplay : public CW…
[/Quote]

可以了,谢谢你, 满天星!
我会继续努力。
MfcGood 2009-03-18
  • 打赏
  • 举报
回复
用CreateEvent创建事件对象来同步线程吧
zyc_lc 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 NineheadedBird 的回复:]
估计是CUIThreadDlg 和外面的操作有资源冲突,如都要独占使用某一文件,而你的1,2操作执行的快,先占住了,线程在等待条件,无响应。
可如下做:
1 先显示出窗口
2. 启动线程,执行文件上传操作,
3. 线程中,回调窗口函数,执行进度条刷新。
[/Quote]

我也想知道能不能先显示窗口,在自动启动线程,请多多指点,谢谢!
因为此程序要求在被外界程序调用后自动运行。
zyc_lc 2009-03-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cnzdgs 的回复:]
把界面和功能分开在两个线程中处理,否则在长时间执行功能时没法响应消息。
[/Quote]
老大,我按我的理解写为:
void CUploadFilesDlg::UploadFatFiles()
{
CWinThread *pThreadS=AfxBeginThread(RUNTIME_CLASS(CUploadDisplay));

CWinThread *pThreadD = AfxBeginThread(GetAndUploadFileThread,this);

}


不过CUploadDisplay还是没有显示出窗体来,class CUploadDisplay : public CWinThread是这样一个类,主要想实现调用新的窗体显示, 而GetAndUploadFileThread则通过全局变量传递参数给CUploadDisplayDlg窗体实现数据更新。
NineheadedBird 2009-03-18
  • 打赏
  • 举报
回复
估计是CUIThreadDlg 和外面的操作有资源冲突,如都要独占使用某一文件,而你的1,2操作执行的快,先占住了,线程在等待条件,无响应。
可如下做:
1 先显示出窗口
2. 启动线程,执行文件上传操作,
3. 线程中,回调窗口函数,执行进度条刷新。
cnzdgs 2009-03-18
  • 打赏
  • 举报
回复
把界面和功能分开在两个线程中处理,否则在长时间执行功能时没法响应消息。
zyc_lc 2009-03-18
  • 打赏
  • 举报
回复
有没有办法再窗体启动显示后,再自动运行某一线程? 怎么操作? 谢谢

15,467

社区成员

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

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