您的位置:首页 > 编程语言 > Delphi

delphi 2010多线程使用

2015-06-05 17:01 573 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: