我有一个调用DLL的Inno Setup脚本。 DLL启动一个线程,最后调用Inno Setup中的函数指针。 由于我不想改变我的Inno脚本的逻辑,我想使用信号量或类似的东西。
这里的重要部分是gui不应该被封锁。
这里有一小段我的代码
procedure InstallData();
var
arrComponents : TStringList;
i, index, p : Integer;
countComp : Integer;
begin
countComp := ICountComponents();
pbState.Max:= countComp;
arrComponents := IGetComponentsToInstall();
pbState.Max := countComp;
for i := 0 to countComp-1 do
begin
// lock semaphore
pbState.Position := i;
p := Pos(' ', arrComponents[i]);
if p > 0 then
begin
//Unzip component
//Call the DLL
end
else
begin
//unzip something else
//Call the DLL
end
end
end;
procedure ProgressCallback(progress:Integer);
begin
pbStateZip.Position:= progress;
//if progress = 100
// unlock semaphore
//
end;
是否有信号量或是否存在不会阻止我的GUI的等效信号?