Bonjour,

Dans une DLL réalisée en Delphi 6 Personal Edition, j'ai une fonction qui, entre autres, doit créer un nouveau thread. Et ce thread ne veut pas démarrer sans que je fasse appel à ShowMessage dans la fonction qui crée ce thread ! Si je le fais, le thread demarre correctement et fonctionne. Sinon, il ne démarre jamais. Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var
  th: TMyThread;
 
procedure TMyThread.Execute;
begin
  synchronize(DoProgress);
  FreeOnTerminate := true; 
end;
 
procedure TMyThread.DoProgress;
begin
  showmessage('TMyThread started');
end;
 
function TestThread():integer; stdcall; export;
begin
  th := TMyThread.Create(true);
  th.Resume;
//  if assigned(th) then showmessage('ok') else showmessage('oups');
  result := integer(th);
end;
Tel quel, le message "TMuThread started" ne s'affiche jamais.
Mais si d'active la ligne "if assigned...", alors mon message apparaît, puis immédiatement, le message "ok" apparaît en se superposant au premier. Je valide "ok", cette boite disparaît et j'ai accès à la boite "TMuThread started" que je peux alors valider à son tour.

J'ai conscience que dans ce code, aucune disposition n'est prise pour terminer le thread correctement. Ceci est intentionnel car je voulais metttre exclusivement le problèe du démarrage en évidence.

Qu'est-ce que je n'ai pas conmpris sur le fonctionnement des Threads ? Qu'est-ce qu'il faut faire pour que le thread démarre ?