Нестандартная проблема рендеринга плитки в Windows Phone (7/8)

В моем приложении для Windows Phone »На главной странице пользователи могут нажать на кнопку, чтобы выполнить некоторые действия, и это приведет к обновлению активной плитки.

У меня проблема, если пользователь нажимает кнопку, а затем нажимает на телефон »s Кнопка Back очень быстро, иногда живая плитка не будет отображаться правильно. Эта проблема редко случается, но это случается, и когда это случается, это только выглядит плохо ...

Я реализую живую плитку следующим образом: создайте пользовательский элемент управления, который будет выглядеть точно так же, как живая плитка, и сохраните его в изолированном хранилище. Затем извлеките его и сохраните в объекте FliptileData. Наконец, я вызываю метод Update в ShellTile. Пожалуйста, посмотрите следующий фрагмент кода, чтобы продемонстрировать процесс.

    // the function that saves the user control to isolated storage
    public Uri SaveJpegToIsolatedStorage(FrameworkElement tile, string suffix, int tileWidth = 336, int tileHeight = 336)
    {
        var bmp = new WriteableBitmap(tileWidth, tileHeight);

        // Force the content to layout itself properly
        tile.Measure(new Size(tileWidth, tileHeight));
        tile.Arrange(new Rect(0, 0, tileWidth, tileHeight));

        bmp.Render(tile, null);
        bmp.Invalidate();

        // Obtain the virtual store for the application
        IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication();
        using (IsolatedStorageFileStream fileStream = new IsolatedStorageFileStream(IsolatedStorageFileName + suffix, FileMode.Create, myStore))
        {
            try
            {
                bmp.SaveJpeg(fileStream, tileWidth, tileHeight, 0, 100);
            }
            catch (Exception)
            {
                return null;
            }
        }

        return new Uri("isostore:/" + IsolatedStorageFileName + suffix, UriKind.Absolute);
    }

    // save the user control to isolated storage and prepare the FlipTileData object
    wideFrontTileImage = SaveJpegToIsolatedStorage((UserControl)this.WideFrontTile, "_wide_front", 691);
    var flipTileData = new FlipTileData();
    flipTileData.WideBackgroundImage = wideFrontTileImage;
    return flipTileData;

    // update the live tile
   var shellTile = ShellTile.ActiveTiles.FirstOrDefault();
   shellTile.Update(customTile.GetFlipTileData(data.UndoneMemosCount == "0" && data.TotalMemosCount == "0"));

Я думаю, что причинаВсе это вызвано тем, что, когда пользователь слишком быстро нажимает кнопку «Назад», ОС завершает все процессы, запущенные в приложении, и рендеринг не выполняется.сделано в то время. Я'Я думаю, если естьЭто способ узнать, когда рендеринг закончен, поэтому я могу отменить кнопку Назад и подождать, пока она не будетПосле завершения вручную выйдите из приложения. Но я просто не знаю, как ...

Любая помощь по этому вопросу будет принята с благодарностью!

Ответы на вопрос(1)

Ваш ответ на вопрос