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;
delphi 2010多线程使用
最新推荐文章于 2025-05-28 09:41:41 发布