I want to build my application with the function to restart itself. I found on codeproject
ProcessStartInfo Info=new ProcessStartInfo();
Info.Arguments="/C choice /C Y /N /D Y /T 3 & Del "+
Application.ExecutablePath;
Info.WindowStyle=ProcessWindowStyle.Hidden;
Info.CreateNoWindow=true;
Info.FileName="cmd.exe";
Process.Start(Info);
Application.Exit();
This does not work at all... And the other problem is, how to start it again like this? Maybe there are also arguments to start applications.
Edit:
http://www.codeproject.com/script/Articles/ArticleVersion.aspx?aid=31454&av=58703
You have the initial application A, you want to restart. So, When you want to kill A, a little application B is started, B kill A, then B start A, and kill B.
To start a process:
To kill a process, is something like this
Another way of doing this which feels a little cleaner than these solutions is to run a batch file which includes a specific delay to wait for the current application to terminate. This has the added benefit of preventing the two application instances from being open at the same time.
Example windows batch file ("restart.bat"):
In the application, add this code:
Why not just the following?
If you want to be sure the app does not run twice either use
Environment.Exit(-1)
which kills the process instantaneously (not really the nice way) or something like starting a second app, which checks for the process of the main app and starts it again as soon as the process is gone.Why not use
??
More on Restart
My solution:
I use similar code to the code you tried when restarting apps. I send a timed cmd command to restart the app for me like this:
The command is sent to the OS, the ping pauses the script for 2-3 seconds, by which time the application has exited from
Application.Exit()
, then the next command after the ping starts it again.Note: The
\"
puts quotes around the path, incase it has spaces, which cmd can't process without quotes.Hope this helps!