BeginInvoke Problem

realpk

Mitglied
Irgendwie funktioniert das ausführen als asynchroner Thread nicht mehr bei mir.
Weiss jemand was ich falsch gemacht habe.

public delegate void testdelegate();
public void testmethode()
{
System.Threading.Thread.Sleep(100000);
}

public void button1_Click(object sender, System.EventArgs e)
{
this.BeginInvoke( new testdelegate(testmethode));
}

Bei einem Klick auf den Button friert das Fenster ein.
 
moin

Ich kenn mich bei Threads nicht wirklich aus, aber hast du testmethode mit dem Delegaten verbunden?

mfg broetchen
 
Inwiefern verbunden? Ich erstelle bei BeginInvoke ja eine neue Instanze des Delgates mit bezug auf die Methode. Sorry weiss nicht wie ich das anders beschreiben soll.
 
Weiss jemand was ich falsch gemacht habe.
Nein, ich weiss nicht mal was Du machen willst. :rolleyes:

Weisst Du denn überhaupt was genau schief gegangen ist? Schon mal was von Try-Catch gehört?

Schau dir mal die [thread=199136]Tutorials[/thread] im 2.Post an!

@Brötchen: Ist auch was für Dich! ;)
 
ich möchte das die testmethode in einem anderen Thread gestartet wird.
Es gibt keine Exception und somit bringt try-Catch leider auch nichts.
Die Methode wird zwar aufgerufen aber im selben Thread.
 
Wenns nicht unbedingt BeginInvoke sein muss, dann lös das doch mit normalen Threads.

Code:
using System.Threading;

...

Thread t = new Thread(new ThreadStart(testmethode));
t.Start();
 
Das mit einem Rückgabewert wird weder mit BeginInvoke noch mit "normalem" Threading funktionieren. Die Multithreading Programmierung ist nunmal ereignisgesteuert.
Das "normale" Programmiermodell mit Rückgabewert zieht hier nicht.
Du kannst jedoch Ereignisse definieren, welche bei Beendigung des Threads ausgeführt werden, und damit einen beliebigen Wert zum Ereignisempfänger transportieren.

Am Besten du siehst dir mal die Beispiele zum Thema Threading und Event-Handling in der MSDN an.
 
Zurück