[c#] Problème avec mes thread/delegate
Bonjour,
j'ai une fonction qui endort le thread courant indefiniment pour attendre des evennements. Donc pas de problème je fait un delegate dessus mais je ne recois aucun evennement... qui sont recueillis dans une autre fonction.
Voici mon code:
Le code de ma fonction qui bloque le thread courant
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
public void thstart()
{
try
{
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_ThreadStartTrace where ProcessID>5");
watcher.EventArrived += new EventArrivedEventHandler(HandleEvent);
watcher.Start();
System.Threading.Thread.Sleep(-1);
watcher.Stop();
return;
}
catch (ManagementException err)
{
richTextBox1.Text += ("Erreur: " + err.Message);
}
} |
Le code de lancement de la fonction ci dessus avec le delegate:
Code:
1 2 3 4 5 6 7 8 9 10
|
public delegate void delegatethstart();
private void button1_Click(object sender, EventArgs e)
{
delegatethstart dele_thread = new delegatethstart(thstart);
IAsyncResult iAr;
iAr = dele_thread.BeginInvoke(null, null);
richTextBox1.Text += ("En attente du processus..." + textBox1.Text);
} |
et enfin le code de la fonction qui recoit les evenements:
Code:
1 2 3 4 5 6 7
|
public void HandleEvent(object sender, EventArrivedEventArgs e)
{
richTextBox1.Text += ("Nom process:" + e.NewEvent["ThreadID"]);
richTextBox1.Text += ("pid PROCESS: " + e.NewEvent["ProcessID"]);
richTextBox1.Text += ("Pid thread :" + e.NewEvent["ThreadID"]);
} |
Pour info quand je ne met pas le delegate l'application est bien entendu bloqué quand je le met l'interface est libre donc cela fonctionne bien.
Quand j'utilise ce code en application console je recois bien les informations désirées, mais la je ne recois rien.
Merci par avance de vos conseils.