2010-07-08 6 views
1

J'ai un processus qui peut être bloqué dans une boucle infinie et je veux ajouter un timeout de 5 secondes afin qu'il ne soit pas suspendu pour toujours.Définition des délais d'expiration?

bool FlagSuccess = false; 
while (FlagSuccess == false) 
{ 
    try 
    { 
    //Blah blah blah 
    FlagSuccess=true; 
    } 
    catch 
    { 
    } 
} 
+1

Peut-être qu'il est préférable de corriger la boucle? –

+0

Correction de la boucle? Je serais heureux de, s'il vous plaît expliquer plus loin. – sooprise

Répondre

2

Ceci est une construction que j'essaie d'éviter. Mais si vous devez:

bool FlagSuccess = false; 
DateTime timeout = DateTime.UtcNow.AddSeconds(5); 
while (FlagSuccess == false && DateTime.UtcNow < timeout) 
{ 
    try 
    { 
    //Blah blah blah 
    FlagSuccess=true; 
    } 
    catch 
    { 
    } 
} 
+0

Vous devez le changer pour ajouter 5 secondes, pas 5 minutes – w69rdy

+0

Je suis ouvert à essayer différentes choses. Quel type de construction recommanderiez-vous que j'utilise? Je suis très nouveau en C#, et une grande partie de mon code est juste moi qui tâtonne dans l'obscurité. Je suis heureux d'apprendre plus de pratiques de code «respectueuses des normes» pendant que je suis encore vert. – sooprise

+0

Je changerais cela en 'DateTime.UtcNow' sinon vous courez le risque de ne pas tourner du tout dans la boucle (vraiment mauvais) ou de tourner pendant plus d'une heure (légèrement mauvais). –

Questions connexes