Я не верю, что это возможно без запуска фонового процесса из вашего приложения.Тем не менее, довольно чистый способ сделать это может изменить ваш метод Main следующим образом:
static void Main(string[] args)
{
if (args.Length > 0 && args[0] == "run")
{
//actually run your application here
}
else
{
//create another instance of this process
ProcessStartInfo info = new ProcessStartInfo();
info.FileName = Assembly.GetExecutingAssembly().Location;
info.Arguments = "run";
info.UseShellExecute = false;
info.CreateNoWindow = true;
Process.Start(info);
}
}
Что-то в этом роде в любом случае, просто списать это с моей головы.По сути, он создает новый экземпляр того же исполняемого файла, но новый процесс видит аргумент командной строки «run» и выполняет работу, а не порождает новый экземпляр.Установка опций, которые у меня есть, должна позволять порожденному процессу печатать и на существующей консоли.