WCF Console Hosted Applicationにオートリフレッシュ機能を提供する次のコードがあります。次のコードで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