locked
Зависает интерфейс до отображения RichEditBox RRS feed

  • Вопрос

  • Доброго времени  суток!
    Разрабатываю простенькое приложение UWP, отображающее содержание rtf документа в RichEditBox. На пк всё загружается моментально, а вот на Windows 10 Mobile до отображения контента проходит 5-10 секунд. В это время прочие элементы управления не отвечают. Как только RichEditBox заканчивает отрисовку текста, так всё приходит в норму.
    Вот код RichEditBox.
    [CSHARP] private async void Page_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
            {
                Rich = new RichEditBox();
                Rich.IsReadOnly = true;
                Rich.IsSpellCheckEnabled = false;
                Rich.IsTextPredictionEnabled = false;
                Rich.IsHitTestVisible = false;
                Rich.BorderThickness = BorderThickness;
                vile = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/" + Convert.ToString(set) + ".rtf"));
                randAccStream = await vile.OpenAsync(FileAccessMode.Read);
                Rich.Document.LoadFromStream(TextSetOptions.FormatRtf, randAccStream);
                Rich.FontFamily = new FontFamily("/Assets/AcademyOSTT.ttf#AcademyOSTT");
                await Task.Delay(5);
                MyStackPanel.Children.Add(Rich);
            }[/CSHARP]
    Зависание происходит из-за последней строчки. Пока отрисовывается Rich, все остальные элементы остаются не доступными.
    Как мне решить данную проблему? Мне нужно, чтобы прочие элементы управления оставались в рабочем состоянии на время загрузки Rich. Спасибо.
    27 июня 2016 г. 7:22

Ответы

  • К сожалению не подскажу код на шарпе, но по идее, если все что предшествует коду MyStackPanel.Children.Add(Rich) запихунть в асинхронную функцию и изменить код на MyStackPanel.Children.Add(await GetRich), то зависание исчезнет.

    Подробнее здесь.


    VB.Net - WPF, UWP

    27 июня 2016 г. 12:42