C# の Debug.WriteLine と Console.WriteLine で出力タイミングが違う
◆ 順番通りに表示したいならどっちかに揃える
どっちを書いていても VisualStudio で実行してると出力のウィンドウにログとして表示されます
デバッグ用にこんな感じの Debug.WriteLine を使う関数を用意していて
呼び出す側では 目印に Console.WriteLine で出力していました
こんなの
これで実行すると順番がおかしなことになってました
実行した順に表示してくれないみたい
すごく単純なサンプルを作って実行してみると
……どうしてこうなった!
Debug のほうが先に出力されてます
Console のほうは内部でバッファにためておいてある程度たまったら出力することになってたりするのでしょうか
なんにせよ 複数の関数を使ってつなげて表示したいなら別の出力方法を混ぜて使わないほうがよさそうです
最後のサンプルみたいな並んでると どっちかに揃えますけど最初のサンプルみたいにユーティリティ関数の中でどっち使ってるかまで覚えておかないといけないのはちょっと面倒です
デバッグ用にこんな感じの Debug.WriteLine を使う関数を用意していて
static public void dump(params dynamic[] args){
foreach(var arg in args){
Debug.WriteLine(arg);
}
}
foreach(var arg in args){
Debug.WriteLine(arg);
}
}
呼び出す側では 目印に Console.WriteLine で出力していました
Console.WriteLine("group a");
dump(a1, a2, a3, ab, ac);
Console.WriteLine("group b");
dump(b1, b2, bb, bc);
dump(a1, a2, a3, ab, ac);
Console.WriteLine("group b");
dump(b1, b2, bb, bc);
こんなの
これで実行すると順番がおかしなことになってました
実行した順に表示してくれないみたい
すごく単純なサンプルを作って実行してみると
Debug.WriteLine("aaaaa");
Console.WriteLine("bbbbb");
Debug.WriteLine("aaaaa");
Console.WriteLine("bbbbb");
Debug.WriteLine("aaaaa");
Console.WriteLine("bbbbb");
Console.WriteLine("bbbbb");
Debug.WriteLine("aaaaa");
Console.WriteLine("bbbbb");
Debug.WriteLine("aaaaa");
Console.WriteLine("bbbbb");
aaaaa
aaaaa
aaaaa
bbbbb
bbbbb
bbbbb
aaaaa
aaaaa
bbbbb
bbbbb
bbbbb
……どうしてこうなった!
Debug のほうが先に出力されてます
Console のほうは内部でバッファにためておいてある程度たまったら出力することになってたりするのでしょうか
なんにせよ 複数の関数を使ってつなげて表示したいなら別の出力方法を混ぜて使わないほうがよさそうです
最後のサンプルみたいな並んでると どっちかに揃えますけど最初のサンプルみたいにユーティリティ関数の中でどっち使ってるかまで覚えておかないといけないのはちょっと面倒です