Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
remarque : Si ton deuxième thread utilise des membres
partagés avec ton thread principal il faudra alors utilisé des sectio ns
"lock()"
Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
remarque : Si ton deuxième thread utilise des membres
partagés avec ton thread principal il faudra alors utilisé des sectio ns
"lock()"
Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
remarque : Si ton deuxième thread utilise des membres
partagés avec ton thread principal il faudra alors utilisé des sectio ns
"lock()"
>"cyrille" wrote in message
In article , says...Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
pas.
Dans la méthode appelée depuis le nouveau thread je fais le new() du form
le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
while(from.visible){Sleep(0);}
Et bien c'est pas bon :
- le curseur reste en mode 'sablier'
- Avant ou sans le while() quand je quitte le programme il y a une
NullReference. Je pense qu'il s'agit du framework qui n'accède pas
au handler du form.
Donc je cherche quelle méthode est valide pour ce genre de problème ?
cyrille
>"cyrille" <cyrille@no.spam.net> wrote in message
In article <OzFFpkK9EHA.3944@TK2MSFTNGP12.phx.gbl>, Smith@smith.net says...
Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
pas.
Dans la méthode appelée depuis le nouveau thread je fais le new() du form
le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
while(from.visible){Sleep(0);}
Et bien c'est pas bon :
- le curseur reste en mode 'sablier'
- Avant ou sans le while() quand je quitte le programme il y a une
NullReference. Je pense qu'il s'agit du framework qui n'accède pas
au handler du form.
Donc je cherche quelle méthode est valide pour ce genre de problème ?
cyrille
>"cyrille" wrote in message
In article , says...Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
pas.
Dans la méthode appelée depuis le nouveau thread je fais le new() du form
le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
while(from.visible){Sleep(0);}
Et bien c'est pas bon :
- le curseur reste en mode 'sablier'
- Avant ou sans le while() quand je quitte le programme il y a une
NullReference. Je pense qu'il s'agit du framework qui n'accède pas
au handler du form.
Donc je cherche quelle méthode est valide pour ce genre de problème ?
cyrille
>"cyrille" wrote in message
In article , says...Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
remarque : Si ton deuxième thread utilise des membres
partagés avec ton thread principal il faudra alors utilisé des sections
"lock()"
Mais comment faire pour que ce nouveau thread continu d'exister ?
void lancement(){
Thread thrService = new Thread( this.MaMéthode);
}
void MaMéthode(){
Form2 f2 = new Form2();
f2.Show();
// ensuite le thread se termine ...
// comment le faire exister tout en permettant à f2 de traiter les
}
cyrille
>"cyrille" <cyrille@no.spam.net> wrote in message
In article <OzFFpkK9EHA.3944@TK2MSFTNGP12.phx.gbl>, Smith@smith.net says...
Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
remarque : Si ton deuxième thread utilise des membres
partagés avec ton thread principal il faudra alors utilisé des sections
"lock()"
Mais comment faire pour que ce nouveau thread continu d'exister ?
void lancement(){
Thread thrService = new Thread( this.MaMéthode);
}
void MaMéthode(){
Form2 f2 = new Form2();
f2.Show();
// ensuite le thread se termine ...
// comment le faire exister tout en permettant à f2 de traiter les
}
cyrille
>"cyrille" wrote in message
In article , says...Bonjour,
Il faut créer une méthode qui lancera ta form
dans un nouveau thread.
Thread thrService = new Thread( this.MaMéthode);
remarque : Si ton deuxième thread utilise des membres
partagés avec ton thread principal il faudra alors utilisé des sections
"lock()"
Mais comment faire pour que ce nouveau thread continu d'exister ?
void lancement(){
Thread thrService = new Thread( this.MaMéthode);
}
void MaMéthode(){
Form2 f2 = new Form2();
f2.Show();
// ensuite le thread se termine ...
// comment le faire exister tout en permettant à f2 de traiter les
}
cyrille
>"cyrille" wrote in message
news:
>In article , says ...
>> Bonjour,
>>
>> Il faut créer une méthode qui lancera ta form
>> dans un nouveau thread.
>>
>> Thread thrService = new Thread( this.MaMéthode);
>
>En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
fonctionne
>pas.
>Dans la méthode appelée depuis le nouveau thread je fais le new() du form
puis
>le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
>while(from.visible){Sleep(0);}
>
Votre boucle empêche la pompe à message de prendre les évènements des
fenêtres comme les demandes d'affichages.
cf.:
http://msdn.microsoft.com/msdnmag/issues/04/01/BasicInstincts/default.asp x
http://msdn.microsoft.com/msdnmag/issues/04/06/BasicInstincts/default.asp x
Un Form.ShowDialog serait beaucoup plus simple
>Et bien c'est pas bon :
>- le curseur reste en mode 'sablier'
Normal, la fenêtre ne traite pas les messages cf Form.ShowDialog.
>- Avant ou sans le while() quand je quitte le programme il y a une
exception
>NullReference. Je pense qu'il s'agit du framework qui n'accède pas
correctement
>au handler du form.
>
cf:
http://msdn.microsoft.com/msdnmag/issues/04/06/BasicInstincts/default.asp x
>Donc je cherche quelle méthode est valide pour ce genre de problème ?
>
>cyrille
>"cyrille" <cyrille@no.spam.net> wrote in message
news:MPG.1c4f096a4968e481989681@news.microsoft.com...
>In article <OzFFpkK9EHA.3944@TK2MSFTNGP12.phx.gbl>, Smith@smith.net says ...
>> Bonjour,
>>
>> Il faut créer une méthode qui lancera ta form
>> dans un nouveau thread.
>>
>> Thread thrService = new Thread( this.MaMéthode);
>
>En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
fonctionne
>pas.
>Dans la méthode appelée depuis le nouveau thread je fais le new() du form
puis
>le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
>while(from.visible){Sleep(0);}
>
Votre boucle empêche la pompe à message de prendre les évènements des
fenêtres comme les demandes d'affichages.
cf.:
http://msdn.microsoft.com/msdnmag/issues/04/01/BasicInstincts/default.asp x
http://msdn.microsoft.com/msdnmag/issues/04/06/BasicInstincts/default.asp x
Un Form.ShowDialog serait beaucoup plus simple
>Et bien c'est pas bon :
>- le curseur reste en mode 'sablier'
Normal, la fenêtre ne traite pas les messages cf Form.ShowDialog.
>- Avant ou sans le while() quand je quitte le programme il y a une
exception
>NullReference. Je pense qu'il s'agit du framework qui n'accède pas
correctement
>au handler du form.
>
cf:
http://msdn.microsoft.com/msdnmag/issues/04/06/BasicInstincts/default.asp x
>Donc je cherche quelle méthode est valide pour ce genre de problème ?
>
>cyrille
>"cyrille" wrote in message
news:
>In article , says ...
>> Bonjour,
>>
>> Il faut créer une méthode qui lancera ta form
>> dans un nouveau thread.
>>
>> Thread thrService = new Thread( this.MaMéthode);
>
>En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
fonctionne
>pas.
>Dans la méthode appelée depuis le nouveau thread je fais le new() du form
puis
>le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
>while(from.visible){Sleep(0);}
>
Votre boucle empêche la pompe à message de prendre les évènements des
fenêtres comme les demandes d'affichages.
cf.:
http://msdn.microsoft.com/msdnmag/issues/04/01/BasicInstincts/default.asp x
http://msdn.microsoft.com/msdnmag/issues/04/06/BasicInstincts/default.asp x
Un Form.ShowDialog serait beaucoup plus simple
>Et bien c'est pas bon :
>- le curseur reste en mode 'sablier'
Normal, la fenêtre ne traite pas les messages cf Form.ShowDialog.
>- Avant ou sans le while() quand je quitte le programme il y a une
exception
>NullReference. Je pense qu'il s'agit du framework qui n'accède pas
correctement
>au handler du form.
>
cf:
http://msdn.microsoft.com/msdnmag/issues/04/06/BasicInstincts/default.asp x
>Donc je cherche quelle méthode est valide pour ce genre de problème ?
>
>cyrille
>"cyrille" wrote in message
In article <OqhGk5Q#,
says...>"cyrille" wrote in message
news:
>In article ,
>> Bonjour,
>>
>> Il faut créer une méthode qui lancera ta form
>> dans un nouveau thread.
>>
>> Thread thrService = new Thread( this.MaMéthode);
>
>En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
fonctionne
>pas.
>Dans la méthode appelée depuis le nouveau thread je fais le new() du
puis
>le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
>while(from.visible){Sleep(0);}
>
Votre boucle empêche la pompe à message de prendre les évènements des
fenêtres comme les demandes d'affichages.
cf.:
Un Form.ShowDialog serait beaucoup plus simple
>Et bien c'est pas bon :
>- le curseur reste en mode 'sablier'
Normal, la fenêtre ne traite pas les messages cf Form.ShowDialog.
>- Avant ou sans le while() quand je quitte le programme il y a une
exception
>NullReference. Je pense qu'il s'agit du framework qui n'accède pas
correctement
>au handler du form.
>
cf:
>Donc je cherche quelle méthode est valide pour ce genre de problème ?
>
>cyrille
Merci Paul pour tous ces liens que je vais lire après cette précision :
Je souhaite avoir 2 fenêtres avec chacune son thread d'exécution.
Les 2 fenêtres doivent être accessibles par l'utilisateur, donc pas de
ShowDialog.
La 1ere fenêtre est un form 'normal' avec des controls, la seconde comporte
ocx Shockwave Flash. Elle nécessite un second thread pour que les
Flash ne soient pas stoppées lorsque la 1ere fenêtre exéxute un calcul.
Peut être as tu d'autres liens ou d'autres explications plus adaptés à
configuration.
Merci
Cyrille
>"cyrille" <cyrille@no.spam.net> wrote in message
In article <OqhGk5Q#EHA.1188@tk2msftngp13.phx.gbl>,
paul.bacelar@PASDESPAMlaposte.net says...
>"cyrille" <cyrille@no.spam.net> wrote in message
news:MPG.1c4f096a4968e481989681@news.microsoft.com...
>In article <OzFFpkK9EHA.3944@TK2MSFTNGP12.phx.gbl>, Smith@smith.net
>> Bonjour,
>>
>> Il faut créer une méthode qui lancera ta form
>> dans un nouveau thread.
>>
>> Thread thrService = new Thread( this.MaMéthode);
>
>En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
fonctionne
>pas.
>Dans la méthode appelée depuis le nouveau thread je fais le new() du
puis
>le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
>while(from.visible){Sleep(0);}
>
Votre boucle empêche la pompe à message de prendre les évènements des
fenêtres comme les demandes d'affichages.
cf.:
Un Form.ShowDialog serait beaucoup plus simple
>Et bien c'est pas bon :
>- le curseur reste en mode 'sablier'
Normal, la fenêtre ne traite pas les messages cf Form.ShowDialog.
>- Avant ou sans le while() quand je quitte le programme il y a une
exception
>NullReference. Je pense qu'il s'agit du framework qui n'accède pas
correctement
>au handler du form.
>
cf:
>Donc je cherche quelle méthode est valide pour ce genre de problème ?
>
>cyrille
Merci Paul pour tous ces liens que je vais lire après cette précision :
Je souhaite avoir 2 fenêtres avec chacune son thread d'exécution.
Les 2 fenêtres doivent être accessibles par l'utilisateur, donc pas de
ShowDialog.
La 1ere fenêtre est un form 'normal' avec des controls, la seconde comporte
ocx Shockwave Flash. Elle nécessite un second thread pour que les
Flash ne soient pas stoppées lorsque la 1ere fenêtre exéxute un calcul.
Peut être as tu d'autres liens ou d'autres explications plus adaptés à
configuration.
Merci
Cyrille
>"cyrille" wrote in message
In article <OqhGk5Q#,
says...>"cyrille" wrote in message
news:
>In article ,
>> Bonjour,
>>
>> Il faut créer une méthode qui lancera ta form
>> dans un nouveau thread.
>>
>> Thread thrService = new Thread( this.MaMéthode);
>
>En fait c'est ce que j'ais essayer avant de poster ici, mais ça ne
fonctionne
>pas.
>Dans la méthode appelée depuis le nouveau thread je fais le new() du
puis
>le show() et ensuite pour que la fenêtre reste affichée j'ais mis un
>while(from.visible){Sleep(0);}
>
Votre boucle empêche la pompe à message de prendre les évènements des
fenêtres comme les demandes d'affichages.
cf.:
Un Form.ShowDialog serait beaucoup plus simple
>Et bien c'est pas bon :
>- le curseur reste en mode 'sablier'
Normal, la fenêtre ne traite pas les messages cf Form.ShowDialog.
>- Avant ou sans le while() quand je quitte le programme il y a une
exception
>NullReference. Je pense qu'il s'agit du framework qui n'accède pas
correctement
>au handler du form.
>
cf:
>Donc je cherche quelle méthode est valide pour ce genre de problème ?
>
>cyrille
Merci Paul pour tous ces liens que je vais lire après cette précision :
Je souhaite avoir 2 fenêtres avec chacune son thread d'exécution.
Les 2 fenêtres doivent être accessibles par l'utilisateur, donc pas de
ShowDialog.
La 1ere fenêtre est un form 'normal' avec des controls, la seconde comporte
ocx Shockwave Flash. Elle nécessite un second thread pour que les
Flash ne soient pas stoppées lorsque la 1ere fenêtre exéxute un calcul.
Peut être as tu d'autres liens ou d'autres explications plus adaptés à
configuration.
Merci
Cyrille
>"cyrille" wrote in message
news:
>In article <OqhGk5Q#,
> says...
>> >"cyrille" wrote in message
>> news:
>> >In article ,
says...
Si chaque Thread est dans un ShowDialog, vous pouvez afficher et interagi r
avec les 2 boîtes de dialogues.
ShowDialogue ne fait qu'utiliser une pompe à message. Chaque Thread
(graphique) a sa propre pompe à message et il n'y a donc aucune interf érence
entre les 2 boites de dialogue, CQFD.
Si vous ne me croyez pas, créez une fenêtre et sur un click bouton qu i crée
un thread qui lui même crée un formulaire et l'affiche avec ShowDialo gue.
Vous aurez 2 formulaires qui bougent.
Exemple avec 3 threads au total :
private static void toto()
{
Form4 form4 = new Form4();
form4.ShowDialog();
}
private void button1_Click(object sender, System.EventArgs e)
{
System.Threading.Thread thread1 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread1.Start();
System.Threading.Thread thread2 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread2.Start();
}
>"cyrille" <cyrille@no.spam.net> wrote in message
news:MPG.1c504aa61472a1b6989683@news.microsoft.com...
>In article <OqhGk5Q#EHA.1188@tk2msftngp13.phx.gbl>,
>paul.bacelar@PASDESPAMlaposte.net says...
>> >"cyrille" <cyrille@no.spam.net> wrote in message
>> news:MPG.1c4f096a4968e481989681@news.microsoft.com...
>> >In article <OzFFpkK9EHA.3944@TK2MSFTNGP12.phx.gbl>, Smith@smith.net
says...
Si chaque Thread est dans un ShowDialog, vous pouvez afficher et interagi r
avec les 2 boîtes de dialogues.
ShowDialogue ne fait qu'utiliser une pompe à message. Chaque Thread
(graphique) a sa propre pompe à message et il n'y a donc aucune interf érence
entre les 2 boites de dialogue, CQFD.
Si vous ne me croyez pas, créez une fenêtre et sur un click bouton qu i crée
un thread qui lui même crée un formulaire et l'affiche avec ShowDialo gue.
Vous aurez 2 formulaires qui bougent.
Exemple avec 3 threads au total :
private static void toto()
{
Form4 form4 = new Form4();
form4.ShowDialog();
}
private void button1_Click(object sender, System.EventArgs e)
{
System.Threading.Thread thread1 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread1.Start();
System.Threading.Thread thread2 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread2.Start();
}
>"cyrille" wrote in message
news:
>In article <OqhGk5Q#,
> says...
>> >"cyrille" wrote in message
>> news:
>> >In article ,
says...
Si chaque Thread est dans un ShowDialog, vous pouvez afficher et interagi r
avec les 2 boîtes de dialogues.
ShowDialogue ne fait qu'utiliser une pompe à message. Chaque Thread
(graphique) a sa propre pompe à message et il n'y a donc aucune interf érence
entre les 2 boites de dialogue, CQFD.
Si vous ne me croyez pas, créez une fenêtre et sur un click bouton qu i crée
un thread qui lui même crée un formulaire et l'affiche avec ShowDialo gue.
Vous aurez 2 formulaires qui bougent.
Exemple avec 3 threads au total :
private static void toto()
{
Form4 form4 = new Form4();
form4.ShowDialog();
}
private void button1_Click(object sender, System.EventArgs e)
{
System.Threading.Thread thread1 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread1.Start();
System.Threading.Thread thread2 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread2.Start();
}
>"cyrille" wrote in message
In article <eYdHU5c#,
says...>"cyrille" wrote in message
news:
>In article <OqhGk5Q#,
> says...
>> >"cyrille" wrote in message
>> news:
>> >In article ,
says...
Si chaque Thread est dans un ShowDialog, vous pouvez afficher et
avec les 2 boîtes de dialogues.
ShowDialogue ne fait qu'utiliser une pompe à message. Chaque Thread
(graphique) a sa propre pompe à message et il n'y a donc aucune
entre les 2 boites de dialogue, CQFD.
Si vous ne me croyez pas, créez une fenêtre et sur un click bouton qui
un thread qui lui même crée un formulaire et l'affiche avec ShowDialogue.
Vous aurez 2 formulaires qui bougent.
Exemple avec 3 threads au total :
private static void toto()
{
Form4 form4 = new Form4();
form4.ShowDialog();
}
private void button1_Click(object sender, System.EventArgs e)
{
System.Threading.Thread thread1 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread1.Start();
System.Threading.Thread thread2 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread2.Start();
}
Merci beaucoup Paul pour cette solution du ShowDialog(),
ça fonctionne très bien, sauf que ...
Quand je ferme les fenêtres, l'application lève une exception :
Une exception non gérée du type 'System.NullReferenceException' s'est
dans system.windows.forms.dll
La pile des appels est :
system.windows.forms.dll!
System.Windows.Forms.AxHost.ConnectionPointCookie.Disconnect() + 0x25
system.windows.forms.dll!
System.Windows.Forms.AxHost.ConnectionPointCookie.Finalize() + 0x1c octets
Et l'IDE affiche le code machine de
System.Windows.Forms.AxHost.ConnectionPointCookie.Disconnect
On dirait donc que l'ocx shockwaveflash n'aime pas cette configuration.
Pourtant dans la form1 je n'ais aucune référence à celui-ci.
Seule la seconde fenêtre, qui est ouverte depuis le nouveau thread avec
ShowDialog(), contient la réf sur l'ocx.
Une idée ?
cyrille
>"cyrille" <cyrille@no.spam.net> wrote in message
In article <eYdHU5c#EHA.2600@TK2MSFTNGP09.phx.gbl>,
paul.bacelar@PASDESPAMlaposte.net says...
>"cyrille" <cyrille@no.spam.net> wrote in message
news:MPG.1c504aa61472a1b6989683@news.microsoft.com...
>In article <OqhGk5Q#EHA.1188@tk2msftngp13.phx.gbl>,
>paul.bacelar@PASDESPAMlaposte.net says...
>> >"cyrille" <cyrille@no.spam.net> wrote in message
>> news:MPG.1c4f096a4968e481989681@news.microsoft.com...
>> >In article <OzFFpkK9EHA.3944@TK2MSFTNGP12.phx.gbl>, Smith@smith.net
says...
Si chaque Thread est dans un ShowDialog, vous pouvez afficher et
avec les 2 boîtes de dialogues.
ShowDialogue ne fait qu'utiliser une pompe à message. Chaque Thread
(graphique) a sa propre pompe à message et il n'y a donc aucune
entre les 2 boites de dialogue, CQFD.
Si vous ne me croyez pas, créez une fenêtre et sur un click bouton qui
un thread qui lui même crée un formulaire et l'affiche avec ShowDialogue.
Vous aurez 2 formulaires qui bougent.
Exemple avec 3 threads au total :
private static void toto()
{
Form4 form4 = new Form4();
form4.ShowDialog();
}
private void button1_Click(object sender, System.EventArgs e)
{
System.Threading.Thread thread1 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread1.Start();
System.Threading.Thread thread2 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread2.Start();
}
Merci beaucoup Paul pour cette solution du ShowDialog(),
ça fonctionne très bien, sauf que ...
Quand je ferme les fenêtres, l'application lève une exception :
Une exception non gérée du type 'System.NullReferenceException' s'est
dans system.windows.forms.dll
La pile des appels est :
system.windows.forms.dll!
System.Windows.Forms.AxHost.ConnectionPointCookie.Disconnect() + 0x25
system.windows.forms.dll!
System.Windows.Forms.AxHost.ConnectionPointCookie.Finalize() + 0x1c octets
Et l'IDE affiche le code machine de
System.Windows.Forms.AxHost.ConnectionPointCookie.Disconnect
On dirait donc que l'ocx shockwaveflash n'aime pas cette configuration.
Pourtant dans la form1 je n'ais aucune référence à celui-ci.
Seule la seconde fenêtre, qui est ouverte depuis le nouveau thread avec
ShowDialog(), contient la réf sur l'ocx.
Une idée ?
cyrille
>"cyrille" wrote in message
In article <eYdHU5c#,
says...>"cyrille" wrote in message
news:
>In article <OqhGk5Q#,
> says...
>> >"cyrille" wrote in message
>> news:
>> >In article ,
says...
Si chaque Thread est dans un ShowDialog, vous pouvez afficher et
avec les 2 boîtes de dialogues.
ShowDialogue ne fait qu'utiliser une pompe à message. Chaque Thread
(graphique) a sa propre pompe à message et il n'y a donc aucune
entre les 2 boites de dialogue, CQFD.
Si vous ne me croyez pas, créez une fenêtre et sur un click bouton qui
un thread qui lui même crée un formulaire et l'affiche avec ShowDialogue.
Vous aurez 2 formulaires qui bougent.
Exemple avec 3 threads au total :
private static void toto()
{
Form4 form4 = new Form4();
form4.ShowDialog();
}
private void button1_Click(object sender, System.EventArgs e)
{
System.Threading.Thread thread1 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread1.Start();
System.Threading.Thread thread2 = new System.Threading.Thread(new
System.Threading.ThreadStart(toto));
thread2.Start();
}
Merci beaucoup Paul pour cette solution du ShowDialog(),
ça fonctionne très bien, sauf que ...
Quand je ferme les fenêtres, l'application lève une exception :
Une exception non gérée du type 'System.NullReferenceException' s'est
dans system.windows.forms.dll
La pile des appels est :
system.windows.forms.dll!
System.Windows.Forms.AxHost.ConnectionPointCookie.Disconnect() + 0x25
system.windows.forms.dll!
System.Windows.Forms.AxHost.ConnectionPointCookie.Finalize() + 0x1c octets
Et l'IDE affiche le code machine de
System.Windows.Forms.AxHost.ConnectionPointCookie.Disconnect
On dirait donc que l'ocx shockwaveflash n'aime pas cette configuration.
Pourtant dans la form1 je n'ais aucune référence à celui-ci.
Seule la seconde fenêtre, qui est ouverte depuis le nouveau thread avec
ShowDialog(), contient la réf sur l'ocx.
Une idée ?
cyrille