你是否曾想过如何从你的Windows应用程序中写入到一个单独的控制台窗口,而不是写入日志文件?你可能需要这样做的原因有很多 - 大多数与调试相关。
你是否曾想过如何从你的Windows应用程序中写入到一个单独的控制台窗口,而不是写入日志文件?你可能需要这样做的原因有很多 - 大多数与调试相关。
若要以编程方式实现此操作,您可以从自己的代码中调用适当的Win32控制台函数(例如,使用AllocConsole
创建自己的控制台或使用AttachConsole
使用另一个进程的控制台)。通过这种方式,您可以最好地控制实际发生的情况。
如果在您的其他UI旁边保留一个控制台窗口的完整生命周期是可以接受的,则可以在Visual Studio内更改项目属性并选择“控制台应用程序”,就这么简单:
以下是操作步骤: 在 kernel32.dll 中预定义了一些 API,可供您使用以写入控制台。 下面是该功能的示例用法。
private void button1_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(delegate()
{
AllocConsole();
for (uint i = 0; i < 1000000; ++i)
{
Console.WriteLine("Hello " + i);
}
FreeConsole();
})).Start();
}
[DllImport("kernel32.dll")]
public static extern bool AllocConsole();
[DllImport("kernel32.dll")]
public static extern bool FreeConsole();
如果您只想在调试时使用它,您可以始终将其设为条件性的。
private void button1_Click(object sender, EventArgs e)
{
new Thread(new ThreadStart(delegate()
{
AllocateConsole();
for (uint i = 0; i < 1000000; ++i)
{
Console.WriteLine("Hello " + i);
}
DeallocateConsole();
})).Start();
}
[Conditional("DEBUG")]
private void AllocateConsole()
{
AllocConsole();
}
[Conditional("DEBUG")]
private void DeallocateConsole()
{
FreeConsole();
}
如果您有控制台应用程序,则执行以下操作
System.Console.WriteLine("What ever you want");