UWP - Создание и использование RichEditBox (или любого элемента управления) в потоке без пользовательского интерфейса - PullRequest
0 голосов
/ 16 мая 2018

В настоящее время получается "The application called an interface that was marshalled for a different thread" исключение .

Я вообще не хочу отображать этот элемент управления, только использовать его для перевода richtext в открытый текст или для применения цветов / стилей текстав открытый текст и вывести его как richtext.

Есть ли способ создать RichEditBox элемент управления в потоке, не являющемся пользовательским интерфейсом?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

"Приложение вызвало интерфейс, который был назначен для другого потока"

Распространенным способом решения этой проблемы является использование класса CoreDispatcher. Метод CoreDispatcher.RunAsync планирует предоставленный обратный вызов в потоке пользовательского интерфейса из рабочего потока и возвращает результаты асинхронно. Например:

await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
    RichEditBox richEditBox = new RichEditBox();
    root.Children.Add(richEditBox);  
});

Проверьте документ, на который я ссылался, для получения более подробной информации.

0 голосов
/ 16 мая 2018

Нет способа создать элемент управления в потоке, не являющемся пользовательским интерфейсом.

Если вы хотите использовать функции RichEditBox, вы все равно можете создать их в своем пользовательском интерфейсе, но оставить их скрытыми (Visibility = Visibility.Collapsed).

...