none
Methode in zweiten Thread auslagern RRS feed

  • Frage

  • Hallo,

    ich will eine Methode in einen anderen Thread auslagern um sie, wenn sie zu lange dauert, abbrechen zu können.
    Ich habe zwei Möglichkeiten gefunden, aber beide sind nicht befriedigend:

    1. Möglichkeit:

    ParameterizedThreadStart pts = new ParameterizedThreadStart(this.myMethode);
    Thread thread = new Thread(pts);
    thread.Start(new Object());
    
    private void myMethode(Object parameter)
    {
        //Tu was...
    }
    

    Die 1.Möglichkeit scheint nicht zu funktionieren, wenn die Methode myMethode keinen Parameter hat.

    2. Möglichkeit:

    myThread = new Thread(delegate() { startProcess(); });
    myThread.Start();
    
    private void startProcess()
    {
        process.Start();
    }

    Bei dieser 2.Möglichkeit ist die Methode myThread.Suspend() deprecated (veraltet).
    (Um den Thread wieder zu stoppen, was mein eigentliches Anliegen des Nutzen eines weiteren Threads ist.)

    Wie rufe ich eine Methode im extra Thread auf und stoppe diesen, wenn die Methode keine Parameter besitzt?

    Frank


    www.energiewende-mach-ich-selbst.de

    Freitag, 11. Dezember 2015 11:50

Antworten

  • Hallo Frank,

    verwende anstatt der Basis Thread-Klasse die TPL Methoden. Dort steht mit der CancellationTokenSource ein einheitlicher und robuster Mechanismus zur Verfügung.

    Für ein Beispiel siehe Task Cancellation

    Gruß Elmar

    • Als Antwort markiert frank me Montag, 14. Dezember 2015 09:54
    Samstag, 12. Dezember 2015 15:45
    Beantworter

Alle Antworten