Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > многопоточность с Jedy


Автор: Antony41 23.2.2010, 15:47
Здравствуйте! Всех с праздником. Думаю кто то еще остался трезв)
Следующая ситуация

В компоненте TJvThread, библиотеки Jedy, необходимо создать два потока
В этом компоненте есть следующее свойство
Код

public
    property Threads[Index: Integer]: TJvBaseThread read GetThreads; 

TJvBaseThread это наследник TThread
Код

{
//Что то типа этого:
var Th1, Th2: TJvBaseThread;
begin
//...Create
Th1 := TJvBaseThread.Create(Self, FOnExecute1{MyEvent}, nil{Pointer});
Th2 := TJvBaseThread.Create(Self, FOnExecute2{MyEvent}, nil{Pointer})
JvThread.Threads[0] := Th1;
JvThread.Threads[1] := Th2;
 //но так нельзя 
//...Free
end;
}


Может кто нибудь знает как организовать многопоточность с помощью этого компонента.

Автор: Alexeis 23.2.2010, 18:21
Новый поток создается в функции 
Код

function TJvThread.Execute(P: Pointer): THandle;
var
  BaseThread: TJvBaseThread;
begin
  Result := 0;
  if Exclusive and OneThreadIsRunning then
    Exit;

  if Assigned(FOnExecute) then
  begin
    BaseThread := TJvBaseThread.Create(Self, FOnExecute, P);
    try
      BaseThread.FreeOnTerminate := FFreeOnTerminate;
      BaseThread.OnShowMessageDlgEvent := OnShowMessageDlgEvent; 
      BaseThread.OnTerminate := DoTerminate;
      FThreads.Add(BaseThread);
      DoCreate;
    except
      BaseThread.Free;
      raise;
    end;
    if FRunOnCreate then
    begin
      BaseThread.Resume;
      CreateThreadDialogForm;
    end;
    Result := BaseThread.ThreadID;
  end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)