J'ai une form qui lance un thread (c'est un chat). Le thread doit accéder au
texbox pour modifier le texte.
Lorsque je lance, j'ai un message disant que le thread a tenté d'accéder a
un control de la form, mais ....
Il le refuse.
Comment puis-j y accéder ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
gptvitsion
"Jérôme PINNEAU" <@wanadoo.fr> a écrit dans le message de news:
Bonjour,
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéder au texbox pour modifier le texte. Lorsque je lance, j'ai un message disant que le thread a tenté d'accéder a un control de la form, mais .... Il le refuse. Comment puis-j y accéder ?
Bonjour
sous VB.net j'ai utilisé la ligne suivante dans la méthode Form Load : Control.CheckForIllegalCrossThreadCalls = False Je pense qu'il doit exister la même chose pour C#. Par contre la MSDN dit qu'il faut être prudent avec cette méthode.
Cordialement Philippe
"Jérôme PINNEAU" <@wanadoo.fr> a écrit dans le message de news:
E604BCA1-7272-417B-96AD-B7FD4C43390A@microsoft.com...
Bonjour,
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéder
au texbox pour modifier le texte.
Lorsque je lance, j'ai un message disant que le thread a tenté d'accéder a
un control de la form, mais ....
Il le refuse.
Comment puis-j y accéder ?
Bonjour
sous VB.net j'ai utilisé la ligne suivante dans la méthode Form Load :
Control.CheckForIllegalCrossThreadCalls = False
Je pense qu'il doit exister la même chose pour C#.
Par contre la MSDN dit qu'il faut être prudent avec cette méthode.
"Jérôme PINNEAU" <@wanadoo.fr> a écrit dans le message de news:
Bonjour,
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéder au texbox pour modifier le texte. Lorsque je lance, j'ai un message disant que le thread a tenté d'accéder a un control de la form, mais .... Il le refuse. Comment puis-j y accéder ?
Bonjour
sous VB.net j'ai utilisé la ligne suivante dans la méthode Form Load : Control.CheckForIllegalCrossThreadCalls = False Je pense qu'il doit exister la même chose pour C#. Par contre la MSDN dit qu'il faut être prudent avec cette méthode.
Cordialement Philippe
Delf
On 21 août, 17:38, Jérôme PINNEAU <@wanadoo.fr> wrote:
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéd er au texbox pour modifier le texte. Lorsque je lance, j'ai un message disant que le thread a tenté d'accé der a un control de la form, mais .... Il le refuse. Comment puis-j y accéder ?
Dans certains cas, ça peut fonctionner, souvent, une exception est levée.
Le problème en fait est que le thread que tu lances ne devrait pas accéder à un controle graphique. Afin d'éviter cette erreur dans du WinForm, je te conseillerais de passer par des delegates pour manipuler tes contrôles de manière threadée.
On 21 août, 17:38, Jérôme PINNEAU <@wanadoo.fr> wrote:
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéd er au
texbox pour modifier le texte.
Lorsque je lance, j'ai un message disant que le thread a tenté d'accé der a
un control de la form, mais ....
Il le refuse.
Comment puis-j y accéder ?
Dans certains cas, ça peut fonctionner, souvent, une exception est
levée.
Le problème en fait est que le thread que tu lances ne devrait pas
accéder à un controle graphique.
Afin d'éviter cette erreur dans du WinForm, je te conseillerais de
passer par des delegates pour manipuler tes contrôles de manière
threadée.
On 21 août, 17:38, Jérôme PINNEAU <@wanadoo.fr> wrote:
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéd er au texbox pour modifier le texte. Lorsque je lance, j'ai un message disant que le thread a tenté d'accé der a un control de la form, mais .... Il le refuse. Comment puis-j y accéder ?
Dans certains cas, ça peut fonctionner, souvent, une exception est levée.
Le problème en fait est que le thread que tu lances ne devrait pas accéder à un controle graphique. Afin d'éviter cette erreur dans du WinForm, je te conseillerais de passer par des delegates pour manipuler tes contrôles de manière threadée.
//Dans le Thread this.Invoke(new InvokeMyControls(ActionSurMesControls));
//Création de la fonction private void ActionSurMesControls() { //Mes Contrôles Textbox1.Text = laChaine;
}
Sinon si le message est dans le Thread alors //Déclaration private delegate void InvokeMyControls(string lachaine1, string lachaine2);
//Dans le Thread { string str1="1"; string str2="2"; this.Invoke(new InvokeMyControls(ActionSurMesControls),str1,str2); } //Création de la fonction private void ActionSurMesControls(string strchaine1, string strchaine2) { //Mes Contrôles Textbox1.Text = strchaine1; Textbox2.Text = strchaine2; }
Voilà.
David L "Jérôme PINNEAU" <@wanadoo.fr> a écrit dans le message de news:
Bonjour,
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéder
au
texbox pour modifier le texte. Lorsque je lance, j'ai un message disant que le thread a tenté d'accéder a un control de la form, mais .... Il le refuse. Comment puis-j y accéder ?
//Dans le Thread
this.Invoke(new InvokeMyControls(ActionSurMesControls));
//Création de la fonction
private void ActionSurMesControls()
{
//Mes Contrôles
Textbox1.Text = laChaine;
}
Sinon si le message est dans le Thread alors
//Déclaration
private delegate void InvokeMyControls(string lachaine1, string lachaine2);
//Dans le Thread
{
string str1="1";
string str2="2";
this.Invoke(new InvokeMyControls(ActionSurMesControls),str1,str2);
}
//Création de la fonction
private void ActionSurMesControls(string strchaine1, string strchaine2)
{
//Mes Contrôles
Textbox1.Text = strchaine1;
Textbox2.Text = strchaine2;
}
Voilà.
David L
"Jérôme PINNEAU" <@wanadoo.fr> a écrit dans le message de
news:E604BCA1-7272-417B-96AD-B7FD4C43390A@microsoft.com...
Bonjour,
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéder
au
texbox pour modifier le texte.
Lorsque je lance, j'ai un message disant que le thread a tenté d'accéder a
un control de la form, mais ....
Il le refuse.
Comment puis-j y accéder ?
//Dans le Thread this.Invoke(new InvokeMyControls(ActionSurMesControls));
//Création de la fonction private void ActionSurMesControls() { //Mes Contrôles Textbox1.Text = laChaine;
}
Sinon si le message est dans le Thread alors //Déclaration private delegate void InvokeMyControls(string lachaine1, string lachaine2);
//Dans le Thread { string str1="1"; string str2="2"; this.Invoke(new InvokeMyControls(ActionSurMesControls),str1,str2); } //Création de la fonction private void ActionSurMesControls(string strchaine1, string strchaine2) { //Mes Contrôles Textbox1.Text = strchaine1; Textbox2.Text = strchaine2; }
Voilà.
David L "Jérôme PINNEAU" <@wanadoo.fr> a écrit dans le message de news:
Bonjour,
J'ai une form qui lance un thread (c'est un chat). Le thread doit accéder
au
texbox pour modifier le texte. Lorsque je lance, j'ai un message disant que le thread a tenté d'accéder a un control de la form, mais .... Il le refuse. Comment puis-j y accéder ?