Accueil > Forum > > > > Problème avec Event, Form et Thread
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
|
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
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURSTECHDAYS PARIS 2010 : SHAREPOINT 2010 POUR LES DéVELOPPEURS par ROMELARD Fabrice
Animé par: Laurent Cotton Le développement dans SharePoint 2010 passe par plusieurs axes qui seront évoqués dans cette session, mais plus particulièrement les développements simples lié au besoin Business Business Connectivity Services Ce BCS es...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|