我有以下代碼爲WCF控制檯託管應用程序提供自動刷新功能。如何防止以下代碼中出現StackOverflow錯誤?
當Console.ReadKey接受無效字符時,它將重新啓動ReadKey方法。如果用戶在該代碼上足夠長的時間對鍵盤進行了篡改,它將進入StackOverflowException。
有沒有人有辦法重寫這段代碼,使它不會導致堆棧吹?
[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();
}
我一直在盯着這永遠,最後決定發佈,我發佈後我想到了這個權利。謝謝,這工作。 – bendewey 2009-04-27 01:15:15