type TMythread = class(TThread) private { Chaîne qui sera utilisée par la méthode Execute} FMyString: string; protected procedure Execute; override; public constructor Create(MyString: string); end; implementation { TMythread } constructor TMythread.Create(MyString: string); begin inherited Create(true); FMyString := MyString; Resume; end; procedure TMythread.Execute; begin FMyString := 'May Delphi be with you !'; //etc end;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questiontype TMythread = class(TThread) private { Chaîne qui sera utilisée par la méthode Execute} FMyString: string; protected procedure Execute; override; public constructor Create(); end; var FLock: TCriticalSection; //<<< déclaration du critical section... implementation { TMythread } constructor TMythread.Create; begin inherited Create(true); // si MyString est une variable externe alors dans le cas d'une lecture ca posera pas de gros prob normalement par contre en écriture ca peut cracher l'appli si 2 threads touchent à la meme variale en meme temps... mais pour l'exemple je met comment fer : FLock.Acquire; //<<< ceci a pour effet de bloker tous les ot threads FMyString := MyString; FLock.Release; // <<< ceci a pour effet de débloker les threads... Resume; end; procedure TMythread.Execute; begin FMyString := 'May Delphi be with you !'; //etc end; // a mettre en fin de form Initialization If not Assigned(fLock) Then //<<< si le CriticalSection est pas assigné alors... fLock := TCriticalSection.Create; //<<< on le crée... Finalization fLock.Free; //<<< ici on le libère...