UWP - 在非UI线程中创建和使用RichEditBox(或任何控件)

时间:2018-05-16 03:55:13

标签: uwp ui-thread

目前获得"The application called an interface that was marshalled for a different thread" 例外

我根本不想显示这个控件,只是用它来将richtext翻译成纯文本或将颜色/文本样式应用到纯文本并以richtext形式出来。

有没有办法在非UI线程中创建RichEditBox控件?

感谢。

2 个答案:

答案 0 :(得分:0)

无法在非UI线程中创建控件。

如果您想使用RichEditBox功能,您仍然可以在用户界面中创建一个但隐藏它(Visibility = Visibility.Collapsed)。

答案 1 :(得分:0)

  

“应用程序调用了为不同线程编组的接口”

解决此问题的常用方法是使用CoreDispatcher类。CoreDispatcher.RunAsync方法从工作线程调度UI线程上提供的回调,并异步返回结果。例如:

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

查看我链接的文档以获取更多详细信息。