【问题标题】:UWP - Creating and Using RichEditBox (or any control) in non-UI ThreadUWP - 在非 UI 线程中创建和使用 RichEditBox(或任何控件)
【发布时间】:2018-05-16 03:55:12
【问题描述】:

目前收到"The application called an interface that was marshalled for a different thread" 异常

我根本不想显示这个控件,只是用它来将富文本转换为纯文本或将颜色/文本样式应用于纯文本并将其作为富文本输出。

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

谢谢。

【问题讨论】:

    标签: uwp ui-thread


    【解决方案1】:

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

    如果您想使用 RichEditBox 功能,您仍然可以在您的 UI 中创建一个,但将其隐藏 (Visibility = Visibility.Collapsed)。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2010-11-05
        • 1970-01-01
        • 2019-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多