我的应用不支持正常关闭是什么意思?

What does it mean that my app doesn't support gracefully shutting down?

我已将应用程序发布到 Windows Phone 商店并收到以下警告:

App Policies: 10.4.2 Graceful Shutdown
The app supports graceful shutdown. The app must handle exceptions raised by the any of the managed or native system API and not close unexpectedly. An app that closes unexpectedly fails certification. The app must continue to run and remain responsive to user input after the exception is handled.
Expected Result
1. Launch your app. 2. Navigate throughout the app, and then close the app. 3. Verify that unexpected behavior does not occur during the closing process. 4. Verify that the app remains responsive to user input and user interaction following an app error.

我不确定这里的问题是什么,以及如何解决它。我认为这可能与我的应用程序的内存占用量有关,但这没有意义,因为它只有 1 mb。

[编者注:OP 的母语不是英语,这可能是问题的一部分]

代码:

List<WebBrowser> wbs = new List<WebBrowser>();
        List<PivotItem> pis = new List<PivotItem>();
        List<Uri> uris = new List<Uri>();
        public void mtdUlusal()
        {
            grd.Children.Clear();
            uris.Clear();
            pis.Clear();
            wbs.Clear();
            List<string> headers = new List<string>();
            headers.Add("Hürriyet");
            headers.Add("Milliyet");
            headers.Add("Posta");
            headers.Add("Radikal");
            headers.Add("Zaman");
            headers.Add("Sözcü");
            headers.Add("Cumhuriyet");
            headers.Add("Sol Haber");
            headers.Add("Sabah");
            headers.Add("Star");
            headers.Add("Akşam");
            headers.Add("Türkiye");
            headers.Add("Anadolu Ajansı");
            headers.Add("BirGün");

            Uri uri0 = new Uri("http://cep.hurriyet.com.tr/");
            uris.Add(uri0);

            Pivot pvt = new Pivot();
            pvt.Title = "ULUSAL GAZETELER";
            grd.Children.Add(pvt);
            pvt.Background = new SolidColorBrush(System.Windows.Media.Color.FromArgb(255, 0, 113, 206));
            //pvt.Background = new SolidColorBrush(Windows.UI.Color.FromArgb(125, 100, 0, 75));


            Uri bln = new Uri("about:blank");

            for (int i = 0; i < 14; i++)
            {
                PivotItem pItem = new PivotItem();
                pItem.Header = headers[i];
                pis.Add(pItem);
                Grid grdUlusal = new Grid();
                WebBrowser wb = new WebBrowser();
                wb.IsScriptEnabled = true;
                wbs.Add(wb);
                grdUlusal.Children.Add(wb);
                pItem.Content = grdUlusal;
                pvt.Items.Add(pItem);
            }
            wbs[0].Navigate(uris[0]);
            pvt.SelectionChanged += Pvt_SelectionChanged;
        }

        private void Pvt_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            Pivot pvt = (Pivot)sender;
            Uri uri1 = new Uri("http://wap.milliyet.com.tr/");
            Uri uri2 = new Uri("http://m.posta.com.tr/");
            Uri uri3 = new Uri("http://www.radikal.com.tr/");
            Uri uri4 = new Uri("http://www.zaman.com.tr/mobile.action");
            Uri uri5 = new Uri("http://m.sozcu.com.tr/");
            Uri uri6 = new Uri("http://www.cumhuriyet.com.tr/");
            Uri uri7 = new Uri("http://haber.sol.org.tr/");
            Uri uri8 = new Uri("http://www.sabah.com.tr/");
            Uri uri9 = new Uri("http://mobil.stargazete.com/default.asp");
            Uri uri10 = new Uri("http://m.aksam.com.tr/");
            Uri uri11 = new Uri("http://m.turkiyegazetesi.com.tr/");
            Uri uri12 = new Uri("http://www.aa.com.tr/");
            Uri uri13 = new Uri("http://www.birgun.net/");

            uris.Add(uri1);
            uris.Add(uri2);
            uris.Add(uri3);
            uris.Add(uri4);
            uris.Add(uri5);
            uris.Add(uri6);
            uris.Add(uri7);
            uris.Add(uri8);
            uris.Add(uri9);
            uris.Add(uri10);
            uris.Add(uri11);
            uris.Add(uri12);
            uris.Add(uri13);
            for (int i = 0; i < 14; i++)
            {
                if (pvt.SelectedItem == pis[i])
                {
                    wbs[i].Navigate(uris[i]);

                }
            }

        }

如果您想要显示 HTML,那么您应该只有一个 WebBrowser 控件,并在用户选择该枢轴时导航到新的 URL。例如,这里有一些简单的 XAML 放在页面上:

<Grid x:Name="LayoutRoot" Background="Transparent">
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto"/>
    <RowDefinition Height="*"/>
  </Grid.RowDefinitions>

  <phone:Pivot SelectionChanged="OnPivotChanged">
    <phone:PivotItem Header="microsoft"/>
    <phone:PivotItem Header="msdn"/>
    <phone:PivotItem Header="onedrive"/>
    <phone:PivotItem Header="office"/>
  </phone:Pivot>

  <phone:WebBrowser x:Name="browser" Grid.Row="1" 
                    IsScriptEnabled="True" 
                    Navigated="OnBrowserNavigated" 
                    NavigationFailed="OnNavigationFailed"/>
  <TextBlock x:Name="errorMessage" FontSize="38" 
              Text="sorry, couldn't navigate to that site :-(" 
              TextWrapping="Wrap" Margin="30,0" 
              HorizontalAlignment="Center" VerticalAlignment="Center" 
              Grid.Row="1" Visibility="Collapsed"/>
</Grid>

这是相关代码:

private void OnPivotChanged(object sender, SelectionChangedEventArgs e)
{
  browser.Visibility = Visibility.Collapsed;
  errorMessage.Visibility = Visibility.Collapsed;
  var newItem = e.AddedItems[0] as PivotItem;
  var site = new Uri("http://www." + newItem.Header.ToString() + ".com/");
  browser.Navigate(site);
}

private void OnBrowserNavigated(object sender, NavigationEventArgs e)
{
  browser.Visibility = Visibility.Visible;
}

private void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
{
  errorMessage.Visibility = Visibility.Visible;
}

它非常基本,没有太多错误检查,但您应该明白了。 运行 在模拟器上,每个分析器似乎稳定在 75MB 左右,这完全在商店应用程序的限制内。