0

次のコードは奇妙な動作をします。その理由を理解しようとしています。

NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(8080);
EmbeddableDocumentStore db = new EmbeddableDocumentStore();
db.DataDirectory = @"C:\Google Drive\TradingFramework\RavenDatabase\";
db.UseEmbeddedHttpServer = true;
db.Initialize();

bool halt = true;

Console.WriteLine("Read to try server");
Console.ReadLine();

上記の「bool halt」のコードは RavenDB データベースを初期化しますが、この質問の目的とは関係ありません。2 つのシナリオを実行しました。

  • a) VS2012 内の行にデバッグ モードでブレーク ポイントを配置しますbool halt = true;。その時点で、localhost:8080 をリッスンする作成済みの Web サーバーにアクセスできるはずです。そうではありません。ブレークポイントの前に待機ループをコードに入れても、違いはありませんThread.Sleep(xxx)

  • b) ブレークポイントを削除すると、コードの実行が停止し、行 でユーザー入力を待ちますConsole.ReadLine();。この場合、localhost:8080 のサーバーが応答し、問題なく動作します。

なぜそうなのですか?Console.Readline() に対してブレークポイントを設定すると何かが実行されないのはなぜですか? 私は厳密にテスト/開発しているだけですが、それがどのような違いを生むのか理解しようとしていますか? 私はいつも、a) と b) はまったく同じで、コードの実行を中断するという印象を受けていました。

4

1 に答える 1