Laden...

Abstrakte Klasse für threaded Tasks

Erstellt von Landarzar vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.969 Views
L
Landarzar Themenstarter:in
2 Beiträge seit 2004
vor 16 Jahren
Abstrakte Klasse für threaded Tasks

Abstrakte Klasse für threaded Tasks:

Eine kleine abstrakte Klasse die ich selber sehr gerne benutze wenn ich z.B. ein Tcplistener implementiere, der einen eigenen Thread benötigt. Der Thread lässt sich mit StartThread starten und mit StopThread stoppen. Wenn der Thread gestartet ist wird die abstrakte Methode OnLoop() kontinuierlich aufgerufen, wobei nach jeden aufruf eine durch Sleeptime festgelegte anzahl an ms pausiert wird. Beim Thread Start, wird die virtuelle Methode OnThreadStarting() aufgerufen, OnThreadStarted() wird aufgerufen wenn der thread gestarted wurde, beim Thread stop wird die OnThreadClosing() methode aufgrufen. (Anmerkung: OnThreadStoping und OnThreadStarted() werden auf dem Thread ausgeführt.) Bei einem Unbehandelten fehler der in der OnLoop() methode auftritt wird die virtuelle methode OnException(Exception e) aufgrufen. Wen es stört das die Klasse "Thread" heißt kann der Namen gerne ändern.


    public class MeineTolleKlasse : Thread //Thread = Landarzar.Threading.Thread
    {
        public MeineTolleKlasse()
        {
        }

        /// <summary>
        /// Gibt an ob der Task gestarted wurde oder nicht.
        /// </summary>
        public bool TaskRunning
        {
            get { return base.ThreadRun; }
        }

        public void StartTask()
        {
            base.StartThread(); //Started den internen Thread.
        }

        public void StopTask()
        {
            base.StopThread(); //Schließt den internen Thread.
        }

        protected override void OnThreadStarting()
        {
            //Wird aufgerufen wenn der Thread gestarted wird.
        }

        protected override void OnThreadStarted()
        {
            //Wird aufgerufen wenn der Thread gestarted wurde.
        }

        protected override void OnThreadClosing()
        {
            //Wird aufgerufen wenn der Thread geschlossen wird.
        }

        protected override void OnException(Exception e)
        {
            //Wird aufgerufen wenn einer fehler in der OnLoop() Methode auftritt.
        }

        protected override void OnLoop()
        {
            //Wird kontinuierlich aufgerufen, wenn der Thread gestarted ist.
            //Nachjeden aufruf wir <SleepTime> ms gewartet.
        }
    }

[EDIT]Habe die Editierte Version hochgeladen..[\Edit]

P.S. Ich würde mich sehr über Kritiken freuen 🙂

Schlagwörter: Thread