Thank you Primoz

OK, I'm still having issues with this, explained in my previous message (ie. passing variables to tasks):
http://otl.17slon.com/forum/index.php/topic,354.msg1291.html#msg1291You suggested using anonymous methods, but I'm pretty sure I didn't explain well my issue, so please allow me to show some code to illustrate the problem:
procedure backup_files();
begin
FPipeline := Parallel.Pipeline.NumTasks(20).Stage(StageProc).Run;
FPipeline.input.Add('C:\file-1.txt');
FPipeline.input.Add('file-1.txt Parent Folder ID');
FPipeline.input.Add('file-1.txt File ID');
FPipeline.input.Add('file-1.txt Encryption Password');
FPipeline.input.Add('C:\file-2.txt');
FPipeline.input.Add('file-2.txt Parent Folder ID');
FPipeline.input.Add('file-2.txt File ID');
FPipeline.input.Add('file-2.txt Encryption Password');
...
end;
// -------------------------------------------------------------- //
procedure StageProc(const input, output: IOmniBlockingCollection);
// ------------------------------------------- //
function GetValue() : String;
var
Value : TOmniValue;
begin
Input.Take(Value);
Result := Trim(Value.AsString)
end;
// ------------------------------------------- //
begin
FileName := GetValue();
ModifDate := GetValue();
Comments := GetValue();
if CompareFileModifDate(ModifDate) then
begin
// OK, file has been modified but we didn't back it up
BackupFileName := CopyFile(FileName);
ZipFileName := ZipFile(BackupFileName);
EncryptFile(ZipFileName);
...
end;
end;
// -------------------------------------------------------------- //
You see, every file that I need to backup has a series of info related to it, ie. file id, parent folder's ID, etc...
So basically, for each execution of StageProc(), I need to pass
multiple variables and
then execute StageProc(), for example (pseudo-code):
procedure backup_files();
begin
FPipeline := Parallel.Pipeline.NumTasks(20).Stage(StageProc).Run;
FPipeline.input.Add('C:\file-1.txt');
FPipeline.input.Add('file-1.txt Parent Folder ID');
FPipeline.input.Add('file-1.txt File ID');
FPipeline.input.Add('file-1.txt Encryption Password');
FPipeline.input.MarkAsReady; // initially I thought CompleteAdding(); was responsible of telling the pipeline that input collection was ready to be used with StageProc()
FPipeline.input.Add('C:\file-2.txt');
FPipeline.input.Add('file-2.txt Parent Folder ID');
FPipeline.input.Add('file-2.txt File ID');
FPipeline.input.Add('file-2.txt Encryption Password');
FPipeline.input.MarkAsReady;
...
end;
Is this possible? Or do I have to group all the variables & add them to pipeline as one? (AFAIK, OTL won't allow me to pass records here)
I mean, what's the recommended OTL way in my case?
Thanks!
Khaled.