내 WPF 앱과 함께 콘솔을 사용하여 디버그 정보를 출력합니다. 콘솔은 다음과 같이 열립니다 :콘솔에 인쇄 된 출력이 표시되지 않습니다.
static class DebugConsole //Console window handling class
{
[DllImport("Kernel32")]
private static extern bool AllocConsole();
[DllImport("Kernel32")]
private static extern bool FreeConsole();
[DllImport("Kernel32")]
private static extern IntPtr GetConsoleWindow();
[DllImport("Kernel32")]
private static extern int GetConsoleOutputCP();
public static bool HasConsole
{
get { return GetConsoleWindow() != IntPtr.Zero; }
}
static public void Open() //Open console window
{
AllocConsole();
Console.WriteLine("test");
}
}
.. 한편 편집기의 다른 부분에서 .. 내가 위의 코드와 응용 프로그램을 실행하면 예상대로
public MainWindow() //This gets executed when the application starts
{
DebugConsole.Open();
InitializeComponent();
}
이 모든 것이 작동합니다. 콘솔 창이 열리고 "test"라는 단어가 콘솔에 인쇄됩니다.
그러나, 나는이에 MainWindow를() 코드를 변경하는 경우 :
public MainWindow() //This gets executed when the application starts
{
Console.WriteLine("test1");
DebugConsole.Open();
InitializeComponent();
}
하고 응용 프로그램을 실행을 ...
예상 출력 : 콘솔가 열리고 그것은 텍스트
의 두 줄이 포함됩니다test1
test
실제 출력 : 콘솔이 열리고 텍스트가 전혀 표시되지 않습니다. 사실, 나는 Console.WriteLine을 코드에서 원하는 모든 것을 사용할 수 있으며 콘솔은 비어 있습니다. Console.WriteLine을 사용하지 않으면 콘솔이 열리기 전에 만 작동합니다.
왜 이런 일이 발생합니까? 어떻게 수정해야합니까?
코드에 작은 콘솔 앱을 만들 수 있었고 예상 한 출력을 얻었습니다 (첫 번째 줄에는 test1, 두 번째 줄에는 test). MainWindow() 메서드에서 중단 점을 설정하여 예상대로 실행되는지 확인 했습니까? 출력을 줄 단위로 보려면 그 단계를 밟아 볼 수 있습니다. –