Каким образом приложение может перезапустить другую копию самого себя с теми же аргументами?Запустите вторую копию программы с теми же аргументами
Мой текущий метод сделать следующие
static void Main()
{
Console.WriteLine("Start New Copy");
Console.ReadLine();
string[] args = Environment.GetCommandLineArgs();
//Will not work if using vshost, uncomment the next line to fix that issue.
//args[0] = Regex.Replace(args[0], "\\.vshost\\.exe$", ".exe");
//Put quotes around arguments that contain spaces.
for (int i = 1; i < args.Length; i++)
{
if (args[i].Contains(' '))
args[i] = String.Concat('"', args[i], '"');
}
//Combine the arguments in to one string
string joinedArgs = string.Empty;
if (args.Length > 1)
joinedArgs = string.Join(" ", args, 1, args.Length - 1);
//Start the new process
Process.Start(args[0], joinedArgs);
}
Однако, кажется, что есть много заняты работой там. Игнорируя чередование vshost, мне все равно нужно обернуть аргументы с пробелами с "
и объединить массив аргументов в одну строку.
Есть ли лучший способ запустить новую копию программы (включая те же аргументы), возможно, просто нужно пройти в Enviroment.CommandLine или принимает строковый массив для аргументов?
Aww, .NET, вилка бомба, как мило :) – Codeman
@ Pheonixblade9 Существует причина, я положил 'Console.ReadLine()' в :) –
Смотрите HTTP://blogs.msdn.com/b/twistylittlepassagesallalike/archive/2011/04/23/everyone-quotes-arguments-the-wrong-way.aspx о объединении проанализированных аргументов командной строки в одну строку. Более короткая версия: это сложнее, чем '' '' + arg + '"''. –