Winforms 中 Console.WriteLine() 的用途是什么

问题描述 投票:0回答:4

我曾经看到过一个

winform
应用程序的源代码,代码中有一个
Console.WriteLine();
。我问了原因,我被告知这是为了调试目的。

请问

Console.WriteLine();
winform
的本质是什么以及它执行什么操作,因为当我尝试使用它时,它从未写过任何内容。

c# winforms console-application
4个回答
15
投票

它写入控制台。

最终用户不会看到它,说实话,将其放入正确的日志中会更干净,但如果您通过 VS 运行它,控制台窗口将会填充。


9
投票

您可以将调试信息定向到控制台应用程序。

正如您在下面的示例中看到的,有一个命令附加父窗口,然后向其注入信息。

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace MyWinFormsApp
{
    static class Program
    {
        [DllImport( "kernel32.dll" )]
        static extern bool AttachConsole( int dwProcessId );
        private const int ATTACH_PARENT_PROCESS = -1;

        [STAThread]
        static void Main( string[] args )
        {
            // redirect console output to parent process;
            // must be before any calls to Console.WriteLine()
            AttachConsole( ATTACH_PARENT_PROCESS );

            // to demonstrate where the console output is going
            int argCount = args == null ? 0 : args.Length;
            Console.WriteLine( "nYou specified {0} arguments:", argCount );
            for (int i = 0; i < argCount; i++)
            {
                Console.WriteLine( "  {0}", args[i] );
            }

            // launch the WinForms application like normal
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault( false );
            Application.Run( new Form1() );
        }
    }
}

这是此示例的资源:http://www.csharp411.com/console-output-from-winforms-application/


4
投票

您通常不会真正使用它,但如果您附加了控制台或使用AllocConsole,它将像在任何其他控制台应用程序中一样运行,并且输出将在那里可见。

为了快速调试,我更喜欢

Debug.WriteLine
,但对于更强大的解决方案,Trace 类可能更可取。


3
投票

除非

Console
被重定向到
Output
窗口,否则它不会执行任何操作。
真的,他们应该利用
Debug.WriteLine
来代替。

Debug.WriteLine
的好处是在
Release
模式下构建时它会得到优化。

注意: 正如 Brad Christie 和 Haedrian 所指出的,显然,在运行 Windows 窗体应用程序时,它实际上会写入 Visual Studio 中的

Console
窗口。你每天都会学到新东西!

© www.soinside.com 2019 - 2024. All rights reserved.