Bonjour,
Je cherche comment appeler la méthode BeginInvoke en Delphi car en C# ok mais en delphi???
D'avance merci
Ben
Bonjour,
Je cherche comment appeler la méthode BeginInvoke en Delphi car en C# ok mais en delphi???
D'avance merci
Ben
Super, je ne connais pas le C#, et ça fait quoi BeginInvoke?
Après on pourra t'aider![]()
Ca permet de lancer un méthode de manière asynchrone à partir d'un Thread ce qui fait que l'on peut modifier des propriétés des controls d'une WinForm à partir d'un Thread ce qui n'est normalement pas possible.
Voici un exemple
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
22 procedure principale(); var thread1 : Thread; begin thread1 := Thread.Create(procThread); thread1.Start; end; procedure procThread(); begin //Ici il est impossible de modifier les propriété de ma dataGrid //Par contre je peut modifier mes DataTable et autres variables Traitment_long_commande_sql_par_exemple; Self.BeginInvoke(proc_modif_propriete_de_ma_datagrid); end; procedure proc_modif_propriete_de_ma_datagrid(); begin ma_datagrid.DataSource := MaDataSource; end;
c'est dans la FAQ Delphi : http://delphi.developpez.com/faq/?pa...creerthreadvcl
regarde vers la fin, tu trouvera ce qu'il te faut : Synchronize
Enfin si c'est bien ça que tu cherche ?
j'avais pas trop envie de créer un class thread juste pour exécuter une méthode de plus je ne suis pas sur que la méthode synchronise résoudra mon probleme... On sait modifier des controles du formulaire dans une méthode synchronisée?
Salut,
Les propositions qui t'ont été faites me semblent impeccables, puisqu'elles répondent exactement à ta question. C'est bien Synchronize.
Tu trouveras des tutoriaux très interessants pour comprendre sur DVP.
Je te suggère aussi d'aller voir l'unité SyncObjs, qui contient de quoi synchroniser les threads entre eux.
Faire un descendant de TThread, qui encapsule parfaitement la gestion d'un thread, est, je pense, ce qu'il faut faire, dans un parfait esprit orienté objet.
Après fais en fonction de tes envies, tu peux aussi. N'oublies pas que
tu peux aller voir les sources (déclaration comme implémentation) de TThread.
Bonjour,
Une solution moins élégante mais plus sure consiste à mettre à jour une variable de la form dédiée à la "modif_propriete_de_ma_datagrid", cette variableétant testée périodiquement par un timer.
Partager