2009-04-20 6 views
1

J'ai une application MDI WinForms qui peut effectuer plusieurs tâches. Chaque tâche s'exécute en tant que backgroundWorker.La bonne façon de contrôler plusieurs threads

Quelle est la bonne approche pour contrôler les fils en cours d'exécution:

  • vérifier si le fil est en cours d'exécution spécifique
  • thread spécifique
  • arrêt?

Par exemple, il ne devrait pas être possible d'exécuter la même tâche simultanément.

Peut-être ai-je besoin d'une classe séparée où je peux stocker la variable isTaskRunning?

Comment est la bonne façon de faire cela?

TIA

Répondre

1

Une approche que vous pourriez prendre serait de créer une classe par tâche. Ensuite, laissez cette classe effectuer les tâches. Il saura si plusieurs tâches peuvent être utilisées à la fois et limiter l'accès à chacune d'entre elles. Par conséquent:

public class LongUploadTask 
{ 
    private bool isRunning; 


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

Remarque, j'ai omis le code de verrouillage si vous accédez à ce à partir de plusieurs threads, que je ne pense pas que vous êtes. En outre, si vous souhaitez exécuter cette opération de manière asynchrone, vous pouvez utiliser des délégués asynchrones et des événements de réinitialisation manuelle pour réaliser ce que votre BackgroundWorker est en train de faire.

+0

c'est comme ça que je le ferais aussi :) –

Questions connexes