Bonjour,
je viens vous demander de l'aide pour fonctionner un bout de code.
Mon probleme c'est que je voudrais faire des ajouts dans une ListBox et comme en C++ .NET le cross threading est interdit. Donc seule solution : passer par un delegate. Mais toutefois, je ne comprends pas le fonctionnement des delegates et thread ensemble.
Voici le code Exemple : (reprise de la FAQ sur les delegate)
Je fais un petit programme de test pour comprendre le principe de delegate et thread ensemble.
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
23
24
25
26
27
28
29
30
31
32 public ref class Form1 : public System::Windows::Forms::Form { public: delegate void ListBoxDelegateHandler(); ListBoxDelegateHandler ^Listboxx; void ExecuteLongTraitement() { this->Invoke(Listboxx); } void MyUpdateListBox(String^ message) { listBox1->Items->Add("titi"); //Normalement je met : //listBox1->Items->Add(message); } Form1(void) { InitializeComponent(); // //TODO*: ajoutez ici le code du constructeur // Listboxx = gcnew ListBoxDelegateHandler(this, &Form1::MyUpdateListBox); Threading::Thread ^t = gcnew Threading::Thread(gcnew Threading::ThreadStart(this, &Form1::ExecuteLongTraitement)); t->Start(); }
Le vrai programme que je dois faire :
Un programme qui permet d'envoyer des données par sockets.
Et recevoir des informations du serveur et les ajouter dans une listbox qui est dans un thread. Mais comme j'ai vu qu'on ne pouvait pas faire du Cross threading donc faut passer par un delegate mais toutefois en C++ j'ai du mal. Est ce que je suis dans la bonne voie? Le code de la FAQ c'est en C# et non en C++... Une aide serait la bienvenue. Merci.
Si je ne suis pas dans la bonne section, je prie un modérateur de placer mon topic au bon endroit.
tchou
Partager