资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

关于bcb多线程的怪问题

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

我在写一个多线程的时候遇到一个怪问题  
  我把ThreadProc1放在类外面既不作为一个类的成员函数却可以  
  可是放在类里就问题来了  
  请高人指教  
  如下是示例代码:  
   
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
  void   *p;  
  (int)p=1;  
  LPDWORD   lpThreadId;  
  CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(&ThreadProc1),p,0,lpThreadId);  
   
   
  }  
  //---------------------------------------------------------------------------  
  DWORD   WINAPI   TForm1::ThreadProc1(   LPVOID   lpParameter){  
   
  //dosomething  
  }  
   
  如下是出错信息  
  [C++   Error]   Unit1.cpp(23):   E2031   Cannot   cast   from   unsigned   long   (__stdcall   *   (_closure   )(void   *))(void   *)   to   unsigned   long   (__stdcall   *)(void   *)

网友回答:

发表者:ahaozi

不要将ThreadProcl放到类中.

发表者:myy

TreadProc不能放在类里面。  
   
  DWORD   WINAPI   ThreadProc1(   LPVOID   lpParameter){  
      TFrom1   *fm   =(TForm1*)lpParameter;   //通过fm访问   Form1  
      //dosomething  
  }  
   
  void   __fastcall   TForm1::Button1Click(TObject   *Sender)  
  {  
      DWORD   ThreadId;   //这里不要定义指针  
      CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(&ThreadProc1),(void*)this,0,&ThreadId);  
  }  
 


 

 
热门推荐笔记本: 联想笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved