目前获得"The application called an interface that was marshalled for a different thread"
例外。
我根本不想显示这个控件,只是用它来将richtext翻译成纯文本或将颜色/文本样式应用到纯文本并以richtext形式出来。
有没有办法在非UI线程中创建RichEditBox
控件?
感谢。
答案 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);
});
查看我链接的文档以获取更多详细信息。