Threading - Timer

martinpriebe

Erfahrenes Mitglied
Hallo,

Ich habe eine Funktion die in einem seperaten Thread läuft.

private void Anfang()
{
..
//Thread erstellen und starten
Thread testThread = new Thread(new ThreadStart(DoSomething));
testThread.Start();
}

Nun möchte ich einen Timer starten der angibt wie lange der Thread max. laufen darf.
Falls die Zeit erreicht ist und der Thread noch lebt soll er beendet werden.

Leider habe ich keine Ahnung wie ich das anstellen soll.

Welchen Timer muß ich nehmen, den aus Threading oder aus Windows.Forms ?
Und muß das Objekt testThread dazu global sein ?
Denn wenn ich es so lasse, kann ich ja nach dem .Start nicht mehr direkt darauf zugreifen, da ich die Funktion dann verlasse.

Oder kann sich sogar der die Funktion DoSomething() selbst darum kümmern das sie nur eine max. Laufzeit haben darf.
Timerfunktion die alle paar Ticks ein Event auslöst in dem ich nachfrage wie lange er schon läuft.

Bin für jeden Tipp dankbar !
mfg
Martin
 
Hallo Martin,

dafür brauchst du keine Steuerung von außen, sondern kannst das in der Thread-Funktion selbst erledigen. Ein Timer mit entsprechenden Events ist dann zwar nicht anwendbar, aber auch nicht nötig.
Am Anfang speicherst du die aktuelle Zeit (z.B. via Environment.TickCount oder mit Hilfe der StopWatch-Klasse). Da der Thread ja sicher in einer Endlosschleife läuft, brauchst du darin nur einen Vergleich zwischer aktueller und gespeicherter Zeit unterzubringen und ggf. die Schleife (und damit den Thread) beenden.

Gruß
MCoder
 
Zurück