MFC多线程问题

archload-1 2007-02-05 12:11:12
请问如何在MFC应用程序中创建一个子线程。
...全文
343 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
archload-1 2007-02-05
  • 打赏
  • 举报
回复
OK了,谢谢!我再看一下。有问题再提出,没问题我会马上揭帖的
archload-1 2007-02-05
  • 打赏
  • 举报
回复
如何我按照楼上的方法定义后,那么在AfxBeginThread函数我该如何引用Sends函数呢
crumpy 2007-02-05
  • 打赏
  • 举报
回复
把static去掉呢? 在声明时使用static, 在定义实现该函数时不用static

UINT CClientSocketList::Sends(LPVOID pParam)
{.....}
archload-1 2007-02-05
  • 打赏
  • 举报
回复
static UINT CClientSocketList::Sends(LPVOID pParam)
{
}

定义时我是这样写的。可是提持示下面这样的错误。
error C2724: “CClientSocketList::Sends”: “static”不应在文件范围内定义的成员函数上使用
这是什么原因呢。
crumpy 2007-02-05
  • 打赏
  • 举报
回复
写错了: 因此你可能需要将CClientSocketList的一个对象实例
crumpy 2007-02-05
  • 打赏
  • 举报
回复

// 比如这是你的类
class CClientSocketList
{
.....

public:
static UINT Sends(...//这里是参数); // 给Sends加一个static关键字
};

但使用static方法后, static是属于类CClientSocketList的, 而不是属于CClientSocketList的某个特定实例的, 因此你可能需要将CClientSocketList, 作为lpVoid的线程参数传入

全局函数, 就是普通的函数.
freecsw 2007-02-05
  • 打赏
  • 举报
回复
改成 static UINT Sends(LPVOID pParam);
archload-1 2007-02-05
  • 打赏
  • 举报
回复
如何定义一个函数为全局或静态成员呢。
crumpy 2007-02-05
  • 打赏
  • 举报
回复
AfxBeginThread要求传递的线程函数是全局或静态成员的, 一般的成员函数不行.

如果Send是CClientSocketList的静态成员, &CClientSocketList::Send就应该可以了.
archload-1 2007-02-05
  • 打赏
  • 举报
回复
我现在有一个函数:
UINT Sends(LPVOID pParam);

然后通过一下方式在CDialog类中创建一个子线程:
AfxBeginThread(m_pServerSocket->m_pClientSocketList->Sends,NULL);

但是在编译的时候总是会提示这样的错误:
error C3867: “CClientSocketList::Sends”: 函数调用缺少参数列表;请使用“&CClientSocketList::Sends”创建指向成员的指针

请问这是什么原因?

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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