[英]How to block console from returning with WPF application attached to console while App is still running
我在WPF入口點有以下代碼
public partial class App : Application
{
[DllImport("kernel32.dll")]
static extern bool AttachConsole(int dwProcessId);
private const int ATTACH_PARENT_PROCESS = -1;
protected override void OnStartup(StartupEventArgs e)
{
if (e.Args.Length == 0)
{
// Launch GUI and pass arguments in case you want to use them.
base.OnStartup(e);
new MainWindow().ShowDialog();
}
else
{
//Do command line stuff
if (e.Args.Contains("-i"))
{
// redirect console output to parent process;
// must be before any calls to Console.WriteLine()
AttachConsole(ATTACH_PARENT_PROCESS);
var stopWatch = new Stopwatch();
stopWatch.Reset();
stopWatch.Start();
for (int i = 0; i < 100; i++)
{
Console.WriteLine(i);
}
stopWatch.Stop();
var ts = stopWatch.Elapsed;
var elapsedTime = $"{ts.Hours:00}:{ts.Minutes:00}:{ts.Seconds:00}.{ts.Milliseconds / 10:00}";
Console.WriteLine("RunTime " + elapsedTime);
}
else
{
AttachConsole(ATTACH_PARENT_PROCESS);
Console.WriteLine("Incorrect arguments");
}
}
Shutdown();
}
}
該提示會立即返回,就像我的應用程序在后台運行一樣。
我希望該應用程序阻止控制台返回,直到該過程完成為止。
AttachConsole
重用現有控制台,而改用AllocConsole()
。 除非父進程正在運行,否則這將阻止控制台,並在程序完成執行后立即關閉控制台。
[DllImport("kernel32.dll")]
static extern bool AllocConsole();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.