次のコンソールアプリケーションでは、最後の行にブレークポイントを設定するとGo(); F5キーを押してブレークポイントまで(デバッグモードで)実行すると、実行ごとに結果に大きな違いはありません。
コンソールは空白にすることができます(何も出力しません):
または、別の実行で結果の一部だけを出力することもできます。
または、ごくまれに、結果が「完全」(「実際化」)になります。
F10(ステップオーバー)またはF11(ステップイン)でデバッグすると、実行結果がすぐにコンソールウィンドウに出力されます。
なぜそのような違いがあるのですか?
サードパーティのライブラリを使用して、自分がアクセスできないソースコードにアプリケーションをデバッグしているとします。
彼らのコードに足を踏み入れることなく彼らからの出力を確実にすることは可能ですか?
コンソールアプリケーションのコード:
using System;
using System.Threading;
namespace _5_2
{
class ThreadNaming
{
static void Main()
{
Thread.CurrentThread.Name = "main";
Thread worker = new Thread(Go);
Thread worker2 = new Thread(Go);
worker.Name = "1111";
worker.Start();
//string just4breakPoint = "aaa";
worker2.Name = "2222";
worker2.Start();
Go();
Console.ReadLine();
}
static void Go()
{
Console.WriteLine
("Hello from " + Thread.CurrentThread.Name);
}
}
}