多线程程序异常之一 “类操作用作多线程”

今天写了个程序需要使用多线程方法,然后查了MSDN得到如下说明:

Call this function to create a new thread.

 
CWinThread* AfxBeginThread(
   AFX_THREADPROC pfnThreadProc,
   LPVOID pParam,
   int nPriority = THREAD_PRIORITY_NORMAL,
   UINT nStackSize = 0,
   DWORD dwCreateFlags = 0,
   LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL 
);

 

Parameters
pfnThreadProc

Points to the controlling function for the worker thread. Cannot be NULL. This function must be declared as follows:

 
UINT __cdecl MyControllingFunction( LPVOID pParam );
我就定义了一个类:
class ApplyClient  
{
public:
 ApplyClient();
 virtual ~ApplyClient();
public:// Op
 UINT StartServer(LPVOID pVoid);

private:
 CSocket m_ListenSocket;//
};
下面一段就会出错:error C2665: 'AfxBeginThread' : none of the 2 overloads can convert parameter 1 from type 'unsigned int (void *)'
CWinThread* m_AppClient= AfxBeginThread(StartServer, (LPVOID) this, THREAD_PRIORITY_BELOW_NORMAL);
到处查、不停的想(5个小时后)终于功夫不负有心人我找到了:原来在类中的操作与一般定义的全局函数不同,从而导致线程启动的失败。
解决方法:在类的声明修改为:
class ApplyClient  
{
public:
 ApplyClient();
 virtual ~ApplyClient();
public:// Op
 static UINT StartServer(LPVOID pVoid);

private:
 CSocket m_ListenSocket;//
};
加油!在C++专家之路上。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值