读书人

*请教怎么用多线程调用这个过程*

发布时间: 2012-02-13 17:20:26 作者: rapoo

***请问如何用多线程调用这个过程***
procedure TfrmPlayMain.RunMode;
var
actcmd:string;
dllName:string;
dllH:THandle;
appPath:string;
ActionCmd:TActionCmd;
i:integer;
CmdLoc:TCmd;
begin
appPath:=extractFilePath(application.ExeName);
for i:=0 to Length(DLLInfo)-1 do
begin
dllH := loadlibrary(pchar(appPath+DLLInfo[i].DLLName));
DLLInfo[i].handle:= dllH;
@CmdLoc:= windows.getProcAddress(dllH,pchar( 'CreateForm '));
try
CmdLoc(DLLInfo[i].LocX,DLLInfo[i].LocY,Application,conAdo);
finally
CmdLoc := nil;
end;
end;
end;


想通过多线程调用一组DLL,不知道如何调用?谢谢

[解决办法]
你是指一个线程序调用一个DLL,还是在一个线程里调用所有的DLL

[解决办法]
把这段代码封装到一个类里面,然后在各个线程里面创建对象,来调用

[解决办法]
写一个类继承TThread
在Execute里去调用这个函数
[解决办法]
for i:=0 to Length(DLLInfo)-1 do
begin
dllH := loadlibrary(pchar(appPath+DLLInfo[i].DLLName));
DLLInfo[i].handle:= dllH;
TDllThread.Create(dllh,true);
end;

把Handle当成TThread的子类的参数传入
TDllThread = class(TThread)
private
FHandle: THandle;
public
constructor Create(AHandle: THandle; B: Boolean);
procedure Execute;override;
end;

procedure TDllThread.Execute;
begin
...
end;

读书人网 >.NET

热点推荐