首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-02-13 
***请问如何用多线程调用这个过程***procedureTfrmPlayMain.RunModevaractcmd:stringdllName:stringdll

***请问如何用多线程调用这个过程***
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;

热点排行