jdweb
Messages postés2Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention14 mars 2006
-
16 juin 2005 à 16:01
jdweb
Messages postés2Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention14 mars 2006
-
14 mars 2006 à 17:11
Bonjour,
Je suis entrain de faire une appli multi fiches.
Chaque fiche est créé dynamiquement et s'affiche dans un onglet comme un navigateur internet. Pour l'instant ça va mais j'ai un probleme j'aimerais faire du multi-threading. En fait je veux que chaque fiche soit dans un thread. Je croyais arriver à mes fins mais si je lance un traitement long à l'interieur d'une de mes fiches : Ca me bloque tout donc je fais pas du vrai multi-threading.
Ma question est : Comment incorporer un TForm entier dans un Thread ?
cs_mounjetado
Messages postés66Date d'inscriptionlundi 13 mars 2006StatutMembreDernière intervention 4 août 2008 14 mars 2006 à 15:42
salut
pour ce que j'en sais tes threads devraient plutôt privilégier tout ce qui n'est pas graphique comme tes calculs.
ensuite pour rafraîchir ton écran ds chaque thread tu dois appeler une méthode qui prend en charge la mise à jour de ton affichage, via la méthode Synchronize().
chaque thread peut évidemment appeler un traitement particulier via synchronize, en l'occurence repeindre l'onglet concerné...
reste à faire en sorte que tes variables ou infos ou données soient accessible pour la form.
procedure TfrmEssaiPort.MiseaJour(Sender : TObject);
begin
Update; //par exemple ou
Edit1.Text := IntToStr(value);
end;
procedure TMeasuringThread.DoneMeasuring;
begin
frmEssaiPort.MiseaJour(Self);
end;
procedure TMeasuringThread.DoMeasuring;
begin
value := ReadingPortValue(monport); // par exemple
end;
procedure TMeasuringThread.Execute;
begin
{ Place thread code here }
while not Terminated do
begin
DoMeasuring; //nested begin end...
Synchronize(DoneMeasuring);
end;
end;
j'espère que tu arriveras à déchiffrer mes explications ;)
je ne suis pas un pro :p
jdweb
Messages postés2Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention14 mars 2006 14 mars 2006 à 17:11
Salut
Merci pour ta réponse mais depuis j'avais abandonner le multi-theading visuel....
Depuis je bosse une une appli multi exe ; c'est à dire un exe qui lance d'autres exe...
Il n'y a plus d'onglet c'est la barre des taches qui me fait zapper mes programmes.
J'ai une question ?
Est-il possible de faire passer un TSession entre 2 exe :
Je me suis documenter sur le passage d'une structure (record) entre 2 applis : c'est tres bien et ca marche tres bien mais faire passer un composant en entier comme un TSession ou un TButton ça marche point...ça plante une erreur comme on les aime...