アプリケーションが同じ引数でそれ自体の別のコピーを再起動する正しい方法は何ですか?
私の現在の方法は、次のことを行うことです
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 のストライピングを無視しても、スペースを含む引数をラップして"
、引数の配列を 1 つの文字列に結合する必要があります。
プログラムの新しいコピー (同じ引数を含む) を起動するより良い方法はありますか?