begin process at 2010 02 10 13:06:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Autre

 > 

Problème avec Event, Form et Thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème avec Event, Form et Thread

mardi 12 septembre 2006 à 13:04:01 | Problème avec Event, Form et Thread

chrisendymion

    Bonjour à tous,

Voilà mon problème :

J'ai une classe principale qui gère mon appli. Cette dernière fait interface entre un programme existant (via des API) et notre central téléphonique via TAPI.

Ensuite une classe de gestion TAPI et une autre classe d'évènements TAPI.

Enfin, une troisième classe gère un petit Form qui affiche les informations obtenues depuis les évènements TAPI.

Pour le moment, j'ai simplement fait un delegate dans ma classe d'event TAPI qui sont interceptés dans la classe TAPI, suite à quoi je crèe un objet Form que j'affiche ensuite. Tout de suite mon premier problème, ma Form est "gelée" !! Je passe par dessus ce problème en créant la Form dans un Thread. La c'est presque parfait, excepté, que depuis un autre event TAPI, je veux modifier le texte d'un label de ladite Form.
Ce que j'ai fait est que je passe un paramètre dans le constructeur de la classe du Form, ce paramètre étant l'objet Event TAPI. A ce moment la, je vois en debug que je peux bien intercepté l'énvement directement dans la classe de ma Form.
Le problème est que rien ne se passe.. En mode debug, je mets un "STOP-Point rouge", et quand le debugger arrive dessus, je peux continuer le debug avec F5, là, tout Visual Studio se freeze 3-4 secondes mais ensuite, tout fonctionne ??? Si je ne fais pas cette étape, il ne se passe simplement rien du tout et mon label n'est pas modifié.........
Je ne peux pas faire une boucle avec Application.DoEvents sinon je ne peux plus intercepté mon event TAPI..
Je suis non seulement coincé, mais en plus, je deviens complètement fou^^

Merci d'avance pour toutes suggestions !!

Chris.

mardi 12 septembre 2006 à 17:02:45 | Re : Problème avec Event, Form et Thread

leprov

tout simplement, il est impossible de modifier un composant graphique dans un autre thread que celui qui l'a créé. je m'explique. tu as thread1 qui est le thread principal, et thread2 qui crée la form. thread1 ne peux modifier aucun composants graphique de la form, seul thread2 a le droit. de plus, lorsque tu lève un évènement, c'est le thread qui a levé l'évènement qui éxecute le code d'interception de l'évènement. Donc si thread2 capte un évènement de thread1, et que le code executé au moment de l'interception modifie un controle de la form, ca plante... la solution est pas compliqué : delegate void MaMethodeCallback(int a, string b) void MaMéthodeQuiModifieLaFormDansUnAutreThreadDansLaClasseForm(int a, string b) { if (this.InvokeRequired) { MaMethodeCallback d = new MaMethodeCallback(MaMéthodeQuiModifieLaFormDansUnAutreThread); object[] Params = new object[2]; Params[0] = a; Params[1] = b; this.Invoke(d, Params); } else { //Code qui modifie la form } } ici, ta méthode est "ThreadSafe", cest a dire que si un autre thread tente de l'executer, elle "invoke" une méthode dans le thread qui va bien (ici elle meme). je ne sais pas si cest tres tres clair, si ya un soucis hesite pas a demander, jessaierais de formuler mieux que ca
mardi 12 septembre 2006 à 18:42:56 | Re : Problème avec Event, Form et Thread

Bidou

Administrateur CodeS-SourceS
Pour comprendre ce qu'est exactement le cross-threading, je te propose de lire ce tuto



VC# forever


Cette discussion est classée dans : problème, form, classe, event, tapi


Répondre à ce message

Sujets en rapport avec ce message

changement de form après un click [ par BadFox ] salut,mon problème est que j'ai une form avec un bouton où lorsque je clique dessus, je voudrais changer tout ce qu'il y a sur cette form mais en la g Win form et problème de défilement avec scrollbars [ par samblob ] Bonjour, J'ai développé une petite application qui me permet de dessiner un patron en fonction de differents paramètres, ceci en environnement MDI. Mo Problème de console au chargement de la form [ par Jujufouq ] Bonjour à tous!Je ne sais pas si ce problème a déjà été posté, mais j'ai ce problème. Voici mon code :using System;using System.Windows.Forms;class fr System.Reflection? [ par Olympe18 ] Bonjour,Je suis encore un débutant en C# et je fais face à un petit problème. La solution est sans doute simple, mais pour l'instant, je ne trouve pas Problème de thread et event [ par 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 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 d'acces a des propriétés [ par apacheswiss ] Bonjou, je commence dans la prog C#,mon problème est que j'ai crée un formulaire "Instr" qui hérite de system.windows.forms.formet j'y ai ajouté deu TopMost??faire une priorité [ par Fildomen ] salutj'utilise le c# 2005 avec son fabuleux menu,mais le problème c que g deux form, toutes les deux doivent être en topmost, et en même temps collée [C#]Délégué et Event ? [ par mictou ] J'ai une classe "ConnexionBase" qui me permet de me connecter à une base de données pour créer un dataset.J'ai une classe "CtlNavigation" qui est en f problème de form + help [ par emmanuel9 ] Bonjour, En faite le problème est simple sauf que j'ai toujours pas trouvé comment faire. J'ai plusieurs formes avec une bouton suivant et precedent e


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales