Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème de thread et event [ Archives / Au secours ] (zobio)

lundi 17 janvier 2005 à 13:34:17 | Problème de thread et event

zobio

Voila, je cherche a lancer un thread secondaire à partir de mon thread principal, jusque la pas de soucis. Ensuite je voudrais que lorsque mon thread secondaire se termine, le thread principal lance une fonction qui lui est propre. Ca semble être relativement basique puisque le principe est de sous traiter une partie de traitement et d'être avisé lorsque le taf est terminé.
Pourtant je ne vois pas trop comment faire.
J'ai essayé avec un event mais le principe de l'event delagate fait que le c'est le thread secondaire qui effectue lance la fonction ratachée a l'event donc ca ne marche pas...

Si ce n'est pas assez clair je peux mettre un bout de code ...

Merci d'avance.

lundi 17 janvier 2005 à 13:52:29 | Re : Problème de thread et event

coq

Administrateur CodeS-SourceS
Si j'ai bien compris ta question, cette page te donne une solution :
Calling Your Main Thread from a Worker Thread in C#
:-)


Cocoricoooooooo !!!!
coq
MVP Visual C#

lundi 17 janvier 2005 à 14:35:15 | Re : Problème de thread et event

Arthenius

Membre Club
en fait tu fais un thread.Start() et tu voudrais faire kkchose quand le thread a fini...

donc apres ton thread.start()
tu fais thread.join(); l'appli se met en attente de fin du thread
et apres tu fais ton script...


Arthenius

 "Il n'y a pas de mauvais développeurs,... 
      mais uniquement de mauvais utilisateurs..."


lundi 17 janvier 2005 à 14:57:31 | Re : Problème de thread et event

zobio

Merci de vos réponses, voila mes commentaires :

Pour Coq :
Cette méthode est celle que j'avais utilisée au début, seulement ca ne peut pas fonctionner si ca ton fonction callback touche aux controles de ton formview. Si tu demandes a afficher un message ca marche nickel, si tu veux modifier le titre d'un bouton par exemple, ca plante message :

An unhandled exception of type 'System.InvalidOperationException' occurred in system.windows.forms.dll

Additional information: The action being performed on this control is being called from the wrong thread. You must marshal to the correct thread using Control.Invoke or Control.BeginInvoke to perform this action.

Pour Arthenius :

J'ai aussi essayé cette méthode mais ce n'est pas vraiment interressant.
Pour moi le multithreading sert a permettre a l'utilisateur de pouvoir faire plusieurs choses en même temps, avec le Join l'appli est bloquée et le thread secondaire fait son taf, mais l'utilisateur est obligé d'attendre la fin pour reprendre la main...  a moins que quelque chose ne m'ais echapé..

Pour le moment la seule solution acceptable que j'ai trouvé est de lancé un timer après le start du thread secondaire. je teste ensuite la propriété IsAlive du thread secondaire et quand elle passe a false je fais mon traitement. Je ne trouve pas ca terrible...

Si ca vous avez d'autres idées ca m'interresse, je pense que tout ceux qui voudront un jour ou l'autre faire du threading seront confrontés a ce genre de galère...


lundi 17 janvier 2005 à 14:59:00 | Re : Problème de thread et event

MorpionMx

Membre Club Administrateur CodeS-SourceS
Pas bete la méthode du Thread.Join();
Mais s'il a besoin d'utiliser son appli pendant l'execution du 2eme thread, il pourra pas, si ? (vu que le Thread.Join() va attendre la fin de son execution )

lundi 17 janvier 2005 à 15:02:53 | Re : Problème de thread et event

MorpionMx

Membre Club Administrateur CodeS-SourceS
Suis a la bourre moi :D

lundi 17 janvier 2005 à 15:10:51 | Re : Problème de thread et event

coq

Administrateur CodeS-SourceS
.Net 1.1 ou 2.0 ?



Cocoricoooooooo !!!!
coq
MVP Visual C#

lundi 17 janvier 2005 à 15:18:55 | Re : Problème de thread et event

zobio

Bein je suis en visual studio 2003 donc il me semble que c'est le framework 1.1

lundi 17 janvier 2005 à 15:48:00 | Re : Problème de thread et event

Arthenius

Membre Club
Mx d'habitutde c coq kest a la bourre comme ca :o)))

juste un conseil installe le sp1 du framework 1.1 pour eviter les surprises... avec les threads...
sinon oui c vrai le join bloque l'appli....
:o(((

et pkoi pas faire un autre thread qui ferais un
while(monThread.Isaalive)
{
Thread.sleep(1000);
}
//Lance ma routine...

note c pas tres difféernet du timer...

Arthenius

 "Il n'y a pas de mauvais développeurs,... 
      mais uniquement de mauvais utilisateurs..."


lundi 17 janvier 2005 à 16:16:32 | Re : Problème de thread et event

zobio

Le service pack est installé.
Par contre la j'ai un truc de ouf... je dois être neuneu...
Petit rappel :
Je crée un thread dans une fonction de mon FormView Principal.
Le but est de faire une recherche de fichiers avec ce thread et de mettre a jour le formview principal une fois le thread secondaire terminé.
Je lance un timer qui teste IsAlive du thread secondaire. (ca marche)
Quand il est fini je lance une fonction de mon Formview et la j'ai encore une erreur, il me dit que le thread qui essaye de modifier le controle n'est pas le bon...
Comment est ce possible sachant que je n'ai que deux threads et que le secondaire est mort. ???
Y a t'il un truc a faire pour dire quel est le thread actif (ce qui me semble abérent mais bon...)


1 2

Cette discussion est classé dans : problème, thread, principal, event, secondaire


Répondre à ce message

Sujets en rapport avec ce message

Thread + NetworkStream [ par JuS ] Je vais vous exposer mon problème (c'est un peu long à lire et à comprendre...)Je programme un programme client/serveur.Le client, en C#, communique a Problème de thread [ par oualla_mohamed ] A partir d'un WinForm je lance un thread qui accède a un contôle de la WinForm.Le souci c'est qu'en je lance l'execution du programme à partir de Visu Problème de thread, socket et form [ par Florynth ] Bon pas très compliqué,j'ai créé un thread qui écoute un portaprès je pèse sur un bouton qui fait connectédonc il créé un socket le connect au port en Problème de Thread [ par Bidou ] Bonjour,Bon je suis pas encore tout à fait au point avec les Threads. La question est certainement pas très compliquée.J'ai une forme qui contient un Problème de lancement de Thread sur PC d'un ami. [ par Kedaessa ] Bonjour, j'ai creer un début d'application (Sous .Net 1.1). Mais lorsque je l'utilise sur le PC d'amis (où n'est installé que le framework 1.1), j'ai Problème de thread (encore) [ par Bidou ] En fait, je dois charger des données dans un Listview, et ca peut prendre du temps.Donc pendant le temps de chargement et d'affichage, j'affiche une f Thread et control [ par RMI ] Bonjour, Voila mon problème: J'ai une form avec un tabcontrol Les 2 premières tabpages sont rempli dans le load du winform la 3ème contenant un treev Timer Thread ??? [ par Globinours ] Voilà mon problème en fait j'ai une RichTextBox et j'effectue une opération assez longue sur l'évenement OnSelectionChanged. Ce que je voudrais c'est Petit problèmeThread .net2 [ par gimli123 ] Bonjour, je suis en train de faire un client irc... et j'avais voulu le faire avec le .net2, car je le trouve plus sympa pour les interfaces graphique Problème de Form [ par emmanuel9 ] Bonjour à tous, En faite je voudrais faire apparaitre une Form par dessus une autre pendant 3 seconde. Donc dans l'évenvement Load je fais Thread.sl


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.