J'ai le code suivant qui fournit une fonction d'actualisation automatique à une application hébergée WCF Console. Lorsque la Console.ReadKey accepte un caractère non valide, elle redémarre la méthode ReadKey. Si l'utilisateur écrase le clavier assez longtemps sur ce code, il passe dans une exception StackOverflowException.Comment empêcher une erreur StackOverflow dans le code suivant?
Est-ce que quelqu'un a un moyen de réécrire ce code afin qu'il ne fasse pas souffler la pile?
[STAThread]
static void Main(string[] args)
{
bool restart = true;
while(restart)
{
using (var myWcfHost = new MyWcfHost())
{
myWcfHost.start();
Console.WriteLine("Press Enter to quit or Ctrl+R to restart");
restart = WaitForRestart();
}
}
}
private static bool WaitForRestart()
{
// clear users input
Console.CursorLeft = 0;
Console.Write(' ');
Console.CursorLeft = 0;
// read users input
var key = Console.ReadKey();
if ((key.Modifiers & ConsoleModifiers.Control) != 0
&& key.Key == ConsoleKey.R)
{
// refersh the settings
ConfigurationManager.RefreshSection("appSettings");
return true;
}
if (key.Key == ConsoleKey.Enter || key.Key == ConsoleKey.Escape)
{
return false;
}
return WaitForRestart();
}
J'ai regardé cela pour toujours, j'ai finalement décidé de poster et j'ai pensé à cela juste après avoir posté. Merci, ça fonctionne. – bendewey