多线程执行完函数报错!!! (100分)

  • 主题发起人 主题发起人 ray_xie156
  • 开始时间 开始时间
R

ray_xie156

Unregistered / Unconfirmed
GUEST, unregistred user!
void __fastcall TMainfrm::BitBtnStartClick(TObject *Sender)
{
//
BitBtnStart->Enabled = false;
Mainfrm->BitBtnClose->Enabled = false;
Mainfrm->N2->Enabled = false;
pLock->Acquire();
terminate=false;
thread1 = new SendThread(NULL);
pLock->Release();
N2->Enabled = false;
Label_time->Caption = "启动:" + Now().FormatString("MM/DD/HH:NN");
}
void __fastcall TMainfrm::BitBtnStopClick(TObject *Sender)
{
//
if(thread1->Sock->Active)
{
thread1->Sock->Close();
}
thread1->Terminate();
//terminate=true;
Memo_Send->Lines->Add("程序已停止");
if(Form_setup->CSocket_Send->Active == true)
Form_setup->CSocket_Send->Close();
BitBtnStop->Enabled = false;
//延时
int i=0;
for(i=0;i<100000000;i++);
BitBtnStart->Enabled = true;
BitBtnClose->Enabled = true;
N2->Enabled = true;
N3->Enabled = false;
}
当跳出这个函数就出错!!!其中thread1是主线程的成员变量!当我按startbutton 后再
按stopbutton 再按startbutton!就发生当跳出StartButton clik事件函数报错
 
我也有同样的问题
 
报什么错?会不会共享冲突? :)
我不大懂只是随便说说
 
将线程代码贴出来看看,估计是Sock访问的原因
 
我也遇到过类似的问题,如果是系统错误提示是“system error”之类的,可能是地址错误,可能是一些变量分配的空间给其它变量占用了,比较容易发生在强制类型转换之处,在线程退出时系统清除资源时候报错。还有可能是用了postmessage等方法,造成的非同步的现象,比较容易发生在你判断子线程是否在运行状态的情况。
 
后退
顶部