有时候,我们的UWP应用会要求用户重启,以应用一些设置。通常情况下,用户只能手工关闭App并再次打开完成重启的步骤。其实,在Windows 10秋季更新里,开发者已经可以通过编程方式,让用户一键完成自动重启App的工作。

比如我的“Character Map UWP”这个应用,在用户更改设置后,需要重启生效。那么第一步,就是在设置页面加一个重启按钮“Restart Now”:

<Button x:Name="BtnRestart" Content="Restart Now" Click="BtnRestart_OnClick" />

然后,我们需要通过秋季更新中的全新牛逼API RequestRestartAsync(String) 来完成重启。

这个API的签名如下:

public static IAsyncOperation<RestartResult> RequestRestartAsync(String launchArguments)

如果只是为了完成重启,不需要参数,那么lauchArguments是可以留空的。

所以,在我的这个例子里,最简单直接的做法就是:

private async Task DoRestartRequest()
{
    await CoreApplication.RequestRestartAsync(string.Empty);
}

 于是,点击重启按钮的事件代码就是:

private async void BtnRestart_OnClick(object sender, RoutedEventArgs e)
{
    await DoRestartRequest();
}

这里顺便提一下,async void 只适用于event handler,这是微软建议的。

现在用户点击"Restart Now"按钮之后,App就可以自己重启自己了,是不是更方便了呢!

如果需要自定义启动参数,那么应用重启的时候是可以在OnActivated事件里使用的:

LaunchActivatedEventArgs launchArgs = args as LaunchActivatedEventArgs;
string argString = launchArgs.Arguments;

具体可以参考微软官方博客的这篇文章