bucherb
Messages postés412Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 août 2007
-
1 févr. 2005 à 09:51
bucherb
Messages postés412Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 août 2007
-
1 févr. 2005 à 12:48
Hello!
J'ai un petit problème.. Je souhaite créer un control dans un Thread séparé du Thread principal... Comment est-ce que je peux faire pour éviter l'ArgumentException "Controls created on one thread cannot be parented to a control on a different thread."
private void button2_Click(object sender, System.EventArgs e)
{
// va mieux dans le constructeur, mais plus pratique de mettre là pour le c/c ;-)
m_addTxtBoxDelegate = new AddTextBoxDelegate(AddTextBox);
m_threadStart = new ThreadStart(ThreadProc);
m_thread = new Thread(m_threadStart);
m_thread.Start();
}
private void ThreadProc()
{
object[] args = new object[]{
new Point(10, 10),
"test",
"txtBox"
};
this.Invoke(m_addTxtBoxDelegate, args);
}
bucherb
Messages postés412Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention13 août 2007 1 févr. 2005 à 12:48
En fait c'est un petit peu plus compliqué qu'un textbox, c'est une histoire de TabPage dans un TabControl... Tout les tabs sont controlés par le Thread principal, sauf celui que j'ai créé avec le deuxième.. Et comme le deuxième Thread c'est une boucle infinie, il n'a pas le temps de laisser la main sur le control. A moins de mettre des "Application.DoEvents()" partout, mais là je perd toute la logique de mon code..
Mais j'ai trouvé la solution, j'ai abandoné les Threads et je passe tout par des délégués asynchrones. De plus je fais exécuter mon code par le Thread principal en utilisant ta méthode, du coup ça fonctionne lol.