[Threads] Impossible depuis autre fonction
Résolu
MoYoX
Messages postés
127
Date d'inscription
Statut
Membre
Dernière intervention
-
MoYoX Messages postés 127 Date d'inscription Statut Membre Dernière intervention -
MoYoX Messages postés 127 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Sous Visual C# je tente d'exécuter une fonction automatiquement au lancement du programme.
Je lançais cette fonction manuellement (par clic sur un bouton), mais maintenant j'aimerais que, lorsque mon programme charge, l'application soit lancée automatiquement.
J'ai donc mis dans le main (enfin, mon "Form1") ma fonction:
Malheureusement, ma fonction "creerListe()" qui se lançait parfaitement à l'appui sur bouton plante avec un problème de "InvalidOperationException" car "Opération inter-threads non valide : le contrôle '' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé."
Or il ne s'agit que de redimensions d'un datagridview etc ... rien qui fait appel à quelconques données.
Et donc, là, je sèche ! J'ai essayé de faire un "thread" avec ce que j'ai trouvé sur internet et de lancer mon "creerListe()" par ce thread, j'ai la même erreur.
Merci beaucoup d'avance à ceux qui pourront m'aider !
Damien
Sous Visual C# je tente d'exécuter une fonction automatiquement au lancement du programme.
Je lançais cette fonction manuellement (par clic sur un bouton), mais maintenant j'aimerais que, lorsque mon programme charge, l'application soit lancée automatiquement.
J'ai donc mis dans le main (enfin, mon "Form1") ma fonction:
public Form1() { InitializeComponent(); creerListe(); }
Malheureusement, ma fonction "creerListe()" qui se lançait parfaitement à l'appui sur bouton plante avec un problème de "InvalidOperationException" car "Opération inter-threads non valide : le contrôle '' a fait l'objet d'un accès à partir d'un thread autre que celui sur lequel il a été créé."
Or il ne s'agit que de redimensions d'un datagridview etc ... rien qui fait appel à quelconques données.
Et donc, là, je sèche ! J'ai essayé de faire un "thread" avec ce que j'ai trouvé sur internet et de lancer mon "creerListe()" par ce thread, j'ai la même erreur.
Merci beaucoup d'avance à ceux qui pourront m'aider !
Damien
A voir également:
- [Threads] Impossible depuis autre fonction
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Comment colorer une cellule excel en fonction du contenu d'une autre cellule ✓ - Forum Excel
- Fonction remplacer sur word - Guide
6 réponses
Bonjour,
Le problème vient du fait que ton thread secondaire "creerListe()" essaie de modifier l'affichage, qui est géré par un autre thread.
Tu peux utiliser dans ton thread créerListe():
Le problème vient du fait que ton thread secondaire "creerListe()" essaie de modifier l'affichage, qui est géré par un autre thread.
Tu peux utiliser dans ton thread créerListe():
this.Invoke((MethodInvoker)delegate { //modifie les propriétés de ta liste });
Bonjour et merci,
Alors en fait je dois mettre mon "creerListe()" entre les accolades du this.invoke ?
Ou le contenu de mon creerListe() ?
Merci d'avance :
Alors en fait je dois mettre mon "creerListe()" entre les accolades du this.invoke ?
Ou le contenu de mon creerListe() ?
Merci d'avance :
Okay !
Alors j'ai mis une ligne qui semblait poser problème:
dans les accolades, mais alors il me retourne une autre erreur:
(nâvré si j'ai l'air très néophyte, mais c'est carrément le cas :( )
Alors j'ai mis une ligne qui semblait poser problème:
Form.ActiveForm.Size = new System.Drawing.Size(dataGridView1.Width + 10, 1000);
dans les accolades, mais alors il me retourne une autre erreur:
Impossible d'appeler Invoke ou BeginInvoke sur un contrôle tant que le handle de fenêtre n'a pas été créé.
(nâvré si j'ai l'air très néophyte, mais c'est carrément le cas :( )
Bon j'ai pas tout compris (surtout pas où trouver le Form1 Shown) mais j'essaierai demain de retour au boulot !
Merci je te tiens au courant !
Merci je te tiens au courant !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alors ! J'ai fait des recherches là dessus, je vois que ça a un rapport avec le "chargement" du projet, mais introuvable dans ma solution.
C'est censé être dans la class "Program" , ma "Form1" ou à un endroit que je ne connais pas ? :(
Merci en tous cas pour le coup de main.
C'est censé être dans la class "Program" , ma "Form1" ou à un endroit que je ne connais pas ? :(
Merci en tous cas pour le coup de main.
Bon bah ... je ne trouve vraiment pas :( même en fouillant sur le net rien à faire.
Je ne vois pas ce qu'est ce "shown", certains en parlent ouais mais ... sans plus.
J'ai essayé également de mettre ces bouts de code dans un "Form1_Load ...", mais c'est pareil.
De l'aide ?
D'avance merci !!
Je ne vois pas ce qu'est ce "shown", certains en parlent ouais mais ... sans plus.
J'ai essayé également de mettre ces bouts de code dans un "Form1_Load ...", mais c'est pareil.
De l'aide ?
D'avance merci !!
Donc en gros, dans mon :
Je dois implémenter un nouveau EventHandler Shown (avec un += new ...) qui renvoie à ma fonction:
Par contre j'ai su le faire pour des changements de valeur dans mes datagrid etc ...
Par exemple:
mais je ne sais pas du tout comment ça marche pour le Shown :(
public Form1() { }
Je dois implémenter un nouveau EventHandler Shown (avec un += new ...) qui renvoie à ma fonction:
private void Form1_Shown(Object Sender, EventArgs e) { }
Par contre j'ai su le faire pour des changements de valeur dans mes datagrid etc ...
Par exemple:
dataGridView2.CellDoubleClick +=new DataGridViewCellEventHandler(dataGridView2_CellDoubleClick);
mais je ne sais pas du tout comment ça marche pour le Shown :(
J'ai essayé de mettre:
sous ma classe
dans les propriétés de mon Form1
et:
pour tester mais rien ne se passe, je ne dois pas être sur la bonne voie
public event EventHandler Shown;
sous ma classe
Form1.ActiveForm.Shown += new EventHandler(Form1_Shown);
dans les propriétés de mon Form1
et:
void Form1_Shown(Object Sender, EventArgs e) { MessageBox.Show("TEST"); }
pour tester mais rien ne se passe, je ne dois pas être sur la bonne voie