如何 shutdown/restart 我的 UWP 应用程序?

How to shutdown/restart my UWP-Application?

我正在使用 Windows IoT 核心 17763 为 RaspberryPi 开发程序。我的 IDE 是 Visual Studio 2019。我的程序使用 C# 和 UWP。

重新启动和关闭不起作用。 对于这些功能,应用程序有 3 个按钮。

我的应用程序如何运行?

  1. 调试时:所有 3 个按钮都只是终止应用程序,调试结束。
  2. 当应用程序处于自动启动状态时:所有 3 个按钮都会执行应用程序的重启。没有关机,没有重启系统,没有物联网核心应用程序。

这里是我应用的相关代码

using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using System;
using Windows.System;

public sealed partial class MainPage : Page
{

    public MainPage()
    {
        InitializeComponent();
    }

    //button to exit application
    private void FlyoutExit_Click(object sender, RoutedEventArgs e)
    {
        Application.Current.Exit();
    }

    //button to restart system
    private void FlyoutReboot_Click(object sender, RoutedEventArgs e)
    {
        ShutdownManager.BeginShutdown(ShutdownKind.Restart, TimeSpan.FromSeconds(0));
    }

    //button to shutdown system
    private void FlyoutShutdown_Click(object sender, RoutedEventArgs e)
    {
        ShutdownManager.BeginShutdown(ShutdownKind.Shutdown, TimeSpan.FromSeconds(0));
    }

}

这是Package.appxmanifest

<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:iot="http://schemas.microsoft.com/appx/manifest/iot/windows10"
IgnorableNamespaces="uap mp iot">
<Capabilities>
<iot:Capability Name="systemManagement"/>
<Capability Name="internetClient" />
<iot:Capability Name="lowLevelDevices"/>
<DeviceCapability Name="serialcommunication">
  <Device Id="any">
    <Function Type="name:serialPort" />
  </Device>
</DeviceCapability>
</Capabilities>
</Package>
  1. 当应用程序退出调试模式时,visual studio将断开远程调试。行为是正确的。应用程序退出后,Windows IoT Core 将启动the default app,配置为启动。

  2. ShutdownManager需要使用物联网系统管理能力。 Package.appmanifest需要添加以下内容,否则应用会异常退出

    <iot:Capability Name="systemManagement"/>