Bonsoir à tous,
voilà j'ai créer un thread sur lequel j'appel la méthode start
à la fin de son exécution j'aimerai réactiver les quelques composants de mon formulaire comment est ce que je pourai faire ca?
Merci bien
bonne soirée
Bonsoir à tous,
voilà j'ai créer un thread sur lequel j'appel la méthode start
à la fin de son exécution j'aimerai réactiver les quelques composants de mon formulaire comment est ce que je pourai faire ca?
Merci bien
bonne soirée
Code c# : 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 void MyThreadTest() { this.Enabled = false; Thread a = new Thread(new ThreadStart(ThreadMethod)); a.Start(); } void ThreadMethod() { try { ... } finally { this.Invoke(new MethodInvoker(delegate{ this.Enabled = true; })); } }
Super merci, ca a directement fonctionné!
au fait est ce que c'est la seule méthode?
ou bien il y en a d'autre.
j'au aussi une autre question a quoi sert le join() d'un thread précisément?
encore merci guys
La méthode join sert à bloquer le thread actuel jusqu'à ce que le thread sur lequel join a été appelé se termine. Du coup ça permet d'introduire de nouvelles méthodes pour faire ce que tu veux :
Le problème est que le thread actuel sera bloqué, et que du coup, à moins d'être sur un thread travailleur crée pour l'occasion, ça n'a pas vraiment d'intéret car cela reviendrais à faire le travail directement sur le thread actuel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 System.Threading.Thread a = ... a.Join(); DoSomething();
Par contre si on lance plusieurs threads en même temps on peut utiliser Join pour être sur d'attendre la fin de l'exécution de tous les threads.
Sinon on peut aussi faire des boucles (en général c'est affreux) ou alors utiliser, peut être, le composant BackgroundWorker (introduit avec .NET 2.0) qui permet de s'abonner à un évènement qui sera appelé lorsque le travail sera terminé.
On peut aussi appeler la méthode en asynchone (utilisation du ThreadPool de manière transparente). Cela permet de faire le traitement de fin dans la méthode AsyncCallback. Mais l'intérêt est limité dans le cas présent ^^
Finallement j'ai un autre problème!
lorsque je lance mon thread et que je fais un Abort dessus et que je le relance avec de nouveau paramettre il ne fait rien est-ce normale?
ça donne au début
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ThreadStart threadDelegate = new ThreadStart(LaunchProcessingFileThread); this.JobThread = new Thread(threadDelegate); this.JobThread.Start();
entre-temp il y a manip d'un fichier
et lorsque j'Abort ca donne
je le réinitialise même et toujours rien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3this.JobThread.Abort(); this.JobThread = null;
pourquoi? est-ce qu'il faut faire une certaine manip? est ce que l'ouvertur du fichier influ sur le lancement du thread?
Hhhaaa oui je viens de faire un throw et il me dit probleme d'E/S je vous tiens au courant!![]()
C'est bon les gars j'ai plus de problèmes encore merciiii!!!
++
Partager