当程序仍然在同一个控制台中工作时,如何在Java中重新启动我的C#控制台应用程序,而无需创建新的。
我尝试使用Process.UseShellExecute = false
启动新应用程序并从新创建的程序中删除当前进程,但我可以使用此方法从子进程中删除父进程。我试图在创建new之后杀死当前进程,但它也不起作用。
答案 0 :(得分:0)
没有直接的方法可以做到这一点,但是你可以模拟这种行为:
重要的是不要忘记将应用程序类型更改为Windows应用程序。
以下代码将重新启动应用程序,直到您按Ctrl + C:
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Reflection;
class Program
{
[DllImport("kernel32", SetLastError = true)]
static extern bool AllocConsole();
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool AttachConsole(uint dwProcessId);
const uint ATTACH_PARENT_PROCESS = 0x0ffffffff;
[STAThread]
static void Main(string[] args)
{
if (!AttachConsole(ATTACH_PARENT_PROCESS))
{
AllocConsole();
}
Console.WriteLine("This is process {0}, press a key to restart within the same console...", Process.GetCurrentProcess().Id);
Console.ReadKey(true);
// reboot application
var process = Process.Start(Assembly.GetExecutingAssembly().Location);
// wait till the new instance is ready, then exit
process.WaitForInputIdle();
}
}