8 votes

Interrompre une boucle while en utilisant un événement externe

J'ai une boucle while dans un service Windows qui tourne pendant x fois et lance x appels téléphoniques après les avoir lus dans un fichier. Maintenant, si je veux créer une interface utilisateur qui donne une option pour arrêter les appels téléphoniques, c'est-à-dire interrompre la boucle avant même qu'elle ne soit terminée. Comment dois-je faire ?

Supposons que j'ai une fonction .

DialCalls(x)
{
  for(int i= 0 ; i<x ; i++)
  {
    // Initiate call
  }
}

Il peut y avoir 2, 3 fonctions DialCalls fonctionnant en même temps dans des threads différents, car j'ai également fait du threading dans l'application. En fait, quelle est la meilleure façon de rompre la boucle à partir d'une page web ?

0voto

unikorn Points 3986

Avoir une variable globale qui est volatile

public static volatile bool stop;    
stop=False;

DialCalls(x)
{
  for(int i= 0 ; i<x && !stop ; i++)
  {
    // Initiate call
  }
}

On Button Click => stop =True;

0voto

nateirvin Points 429

Implémenter un point de terminaison sur le service qui accepte un message qui fait basculer une variable booléenne globale/statique (ou autre), et avoir la boucle à l'intérieur de DialCalls vérifier ladite variable au début de chaque itération. Cela n'interrompra pas les appels téléphoniques en cours, mais je parie que vous ne voulez pas que le service raccroche au milieu de l'appel, il suffit de ne pas passer à l'appel suivant. Ceci interromprait également tous les threads ; assurez-vous simplement que la variable elle-même est thread-safe (par exemple, utilisez volatile mot-clé).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X