2009-04-20 17 views
1

Ich habe eine MDI WinForms-Anwendung, die mehrere Aufgaben ausführen kann. Jede Aufgabe läuft als backgroundWorker.Die gute Möglichkeit, mehrere Threads zu steuern

Was ist der gute Ansatz, um die laufenden Threads zu steuern:

  • geprüft, ob der bestimmte Thread
  • Anschlag bestimmten Thread ausgeführt wird?

Zum Beispiel sollte es nicht möglich sein, die gleiche Aufgabe gleichzeitig auszuführen.

Kann ich eine separate Klasse benötigen, in der ich die Variable isTaskRunning speichern kann?

Wie ist der gute Weg, dies zu tun?

TIA

Antwort

1

Ein Ansatz Sie nehmen könnte, wäre eine Klasse pro Aufgabe zu erstellen. Lassen Sie dann diese Klasse die Aufgaben ausführen. Es wird wissen, ob mehrere Aufgaben gleichzeitig verwendet werden können, und den Zugriff auf die einzelnen Aufgaben einschränken. Daraus folgt:

public class LongUploadTask 
{ 
    private bool isRunning; 


    public void Execute() 
    { 
    if(!isRunning) 
    { 
     //etc... 
    } 
    } 
} 

Hinweis, ich habe Sperrcode links aus, wenn Sie diese von mehreren Threads zugreifen, die ich glaube nicht, Sie sind. Wenn Sie dies asynchron ausführen möchten, können Sie auch asynchrone Delegaten und manuelle Reset-Ereignisse verwenden, um das zu erreichen, was Ihr BackgroundWorker tut.

+0

so würde ich es auch machen :) –

Verwandte Themen