delphi 2010多线程使用

来源:互联网 发布:小程序企业展示源码 编辑:程序博客网 时间:2024/06/05 15:41
 delphi 2010多线程使用 TRefreshThread = class(TThread)  protected    procedure Execute; override;  public    pMainForm:TForm_case_materal_list;  end;procedure TRefreshThread.Execute;begin  inherited;  try    CoInitialize(nil); // 一定要加上此行代码 use ActiveX    FreeOnTerminate := True;    pMainForm.RefreshData(); // 使用这个是真正的开启子线程    // Synchronize(Self, pMainForm.RefreshData);   //fuck 这个使用的还是主线程。可以通过GetCurrentThreadId 测试  finally    CoUninitialize; // 一定要加上此行代码  end;end;procedure TForm_case_materal_list.startRefreshThread;var  refreshThread: TRefreshThread;begin  refreshThread := TRefreshThread.Create(True);  //把窗体句柄传进来  refreshThread.pMainForm:=Self;  refreshThread.Start;end; procedure startRefreshThread();在Delphi  多线程中出现“尚未调用CoInitialize错误”的解决方法解决方法如下:function  TMyThread.ExecTimer: Boolean;begin  Result := False ;  FMyThreadExecfinish := False;  Screen.Cursor := crHourGlass;  CoInitialize(nil); // 一定要加上此行代码  try    TranspondClientBaseData_factory1(HTTPRIOLeExp, HTTPRIONC, LogStrings);    Sleep(1000);    TranspondPersonBaseData_factory1(HTTPRIOLeExp, HTTPRIONC, LogStrings);    Sleep(1000);    TranspondDeptBaseData_factory1(HTTPRIOLeExp, HTTPRIONC, LogStrings);  finally    Result := True;    FMyThreadExecfinish := True;    Screen.Cursor := crDefault;    CoUninitialize;// 一定要加上此行代码  end;end;

0 0
原创粉丝点击