Funktion in seperatem Thread ausführen

RealMarkus

Grünschnabel
Hallo liebe Community,

in meiner Anwendung habe ich eine Userklasse namens UserClass, jeder mit meiner ServerAnwendung verbundene User hat seine eigene, zusätzlich sollen sog. Timed-Events stattfinden, hier verwende ich den Befehl System.Threading.Thread.Sleep(), doch leider kann der User während dieser "Sleep"-Anweisung keine anderen Aktionen mehr ausführen.

Nun die eigendliche Frage: Kann ich aus meiner Klasse heraus eine Funktion ohne Rückgabewert in einem seperaten Thread starten?

Vielen dank füreure Hilfe! Ich bin und bleibe davon überzeugt, dass ihr mir (wieder) helfen könnt. ^^
 
Hi,

Klar kann man das. Die Thread-Klasse liefert dir dafür alle Hilfsmittel. In der MSDN findest du auch Beispiele dafür.

Bzgl. Thread.Sleep.
Im Threading-Namespace gibt es eine Timer-Klasse. Die sollte dir weiterhelfen.
 
Danke schonmal niggo!

Aber könntest du mir vllt. eine kleines Beispiel geben? Denn ich komme nicht dahinter wie ich die funktion jetzt in der Userklasse genau aufrufen soll.

Ich habe die UserClass und die funktion in der TimedEvents - Klasse

Wie erstelle ich den Thread nun aus der Klasse heraus und wie bringe ich ihn dazu die void-Funktion aufzurufen?

MfG Markus
 
Hi

C#:
using System;
using System.Threading;

public class ThreadWork 
{
   private void DoWork()
   {
      for(int i = 0; i<3;i++)
      {
         Console.WriteLine("Working thread...");
            Thread.Sleep(100);
      }
   }

   public void StartDoWork
   {
       Thread thread = new Thread(new ThreadStartDelegate(DoWork));
       thread.Start();
   }
}
Je nach Bedarf, das Thread-Objekt außerhalb der Methode deklarieren, falls du später Zugriff auf den Thread brauchst.

Als Tipp:
Mach dir erstmal ein kleines Projekt, in dem du den Umgang mit Threads etwas üben kannst. Dann hast du es auch einfacher, so was in ein bestehendes Projekt zu intergrieren.
 
Zurück