I'm developing a WinUI3 based app and I need to restart the app to apply some settings. But I can't find a function to do that. I noticed that there is a method--CoreApplication.RequestRestartAsync. However, it only shut the app down but didn't open the app. Is there an API can restart a WinUI app?
-
Are there any specifics in how your app is running? The reason I'm asking - the documentation mentions a couple of important things regarding this. For example, "The app must be visible and foreground when it calls this API."FiddlingAway– FiddlingAway2024-02-15 04:37:24 +00:00Commented Feb 15, 2024 at 4:37
Add a comment
|
2 Answers
Try the Restart API:
// You can pass arguments to the restarted instance.
private void RestartApp(string arguments = "")
{
// The restart will be executed immediately.
Windows.ApplicationModel.Core.AppRestartFailureReason failureReason =
Microsoft.Windows.AppLifecycle.AppInstance.Restart(arguments);
// If the restart fails, handle it here.
switch (failureReason)
{
case AppRestartFailureReason.RestartPending:
break;
case AppRestartFailureReason.NotInForeground:
break;
case AppRestartFailureReason.InvalidUser:
break;
default: //AppRestartFailureReason.Other
break;
}
}
Comments
The suggested Restart API is probably a good place to start.
You should also be able to start a new process like you would start any other .NET process:
string path = Process.GetCurrentProcess().MainModule.FileName;
Process process = Process.Start(new ProcessStartInfo(path));
IntPtr intPtr = IntPtr.Zero;
do
{
intPtr = process.MainWindowHandle;
}
while (intPtr == IntPtr.Zero);
Environment.Exit(0);
2 Comments
Sciencekill
This solution sometimes works, but sometimes it only close the app but don't run a new app
mm8
The code starts the process before closing the current one.