谁熟悉CWinThread???

onjun 2000-12-29 12:07:00
我想用CWinThread处理多线程问题,用Socket处理通信问题(已完成),
但是,我继承了CWinThread类,重载了Run(),调用正常,关闭或终止线程时,
告诉我有严重错误!

怎么办???


求救!!!
...全文
281 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
onjun 2001-01-08
  • 打赏
  • 举报
回复
to witsoft2000:

如何访问主线程的全局变量?太棒了,
举个例子如何?

非常感谢 ndkk
onjun 2001-01-08
  • 打赏
  • 举报
回复
to luxes:
感谢!
PostThreadMessage(WM_CLOSE,NULL,NULL);
测试成功!

onjun 2001-01-05
  • 打赏
  • 举报
回复
有请高手,

come on
seman 2001-01-05
  • 打赏
  • 举报
回复
void CCom_testDlg::OnNewthread()
{
// TODO: Add your control notification handler code here
mythread.CreateThread(CREATE_SUSPENDED);
mythread.Run();
//这里有问题,如果你要线程继续运行应该使用. 用户界面线程是不能直接使用Run()
mythread.ResumeThread();
}
另:强烈建议如果线程没有窗口,不要使用CWinThread
panda_w 2001-01-05
  • 打赏
  • 举报
回复
我想不用Run的话,可以用ResumeThread来启动线程,至于TerminateThread最好不用,你可以用GetExitCodeThread函数或者使用事件使线程结束和启动的。
witsoft2000 2001-01-05
  • 打赏
  • 举报
回复
AfxBeginThread()可以创建两种不同类型的线程哟
witsoft2000 2001-01-05
  • 打赏
  • 举报
回复
给你个小提示:每个子线程都可以访问主线程的全局变量
ndkk 2001-01-05
  • 打赏
  • 举报
回复
在RUN函数中建立一个while死循环使用一个BOOL型变量作为退出信号,在父进程中控制信号决定线程是否结束,在MSDN中有现成的例子。
seman 2001-01-05
  • 打赏
  • 举报
回复
建议不要重载
CWinThread是用户界面线程,如果你的线程没有窗口,是不需要使用CWinThread
onjun 2001-01-05
  • 打赏
  • 举报
回复
to seman:

非常感谢,还有一个问题:

我自己的代码可不可以重载Run()?

如有答案,立马给分!
acute 2000-12-29
  • 打赏
  • 举报
回复
提示说什么错误?
onjun 2000-12-29
  • 打赏
  • 举报
回复
能有这么多人来讨论,非常感谢!

code 如下:
//自定义创建线程方法,mywinthread 继承CWinThread后的实例。
void CCom_testDlg::OnNewthread()
{
// TODO: Add your control notification handler code here
mythread.CreateThread(CREATE_SUSPENDED);
mythread.Run();
}
//自定义终止线程的方法
void CCom_testDlg::OnClosethread()
{
// TODO: Add your control notification handler code here
mythread.PostThreadMessage(WM_QUIT,NULL,NULL);
}

//重载
int MyThread::Run()
{
// TODO: Add your specialized code here and/or call the base class
AfxMessageBox("to run");
return CWinThread::Run();
}
luxes的方法我还没有测试,谢谢告诉我。
我用 TerminateThread行不行呢? 请指教!

再:
不重载Run的话,我自己的代码如何调用?

谢谢
都是朋友!!!
分我照给!!!

vcmfc 2000-12-29
  • 打赏
  • 举报
回复
楼上说的对,你根本不要调用Run,WinTread会自动调用了。
luxes 2000-12-29
  • 打赏
  • 举报
回复
Run是用来处理消息循环,为什么要重载它?
另外,线程的终止应该通过发消息给它解决,不能强制终止:
可以这样:PostThreadMessage(WM_CLOSE);
wjf 2000-12-29
  • 打赏
  • 举报
回复
code?

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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