0

我有一个程序可以查询一堆 WMI、注册表和其他数据。然后,它将数据格式化为各种 RichTextBox,突出显示远程计算机上扫描的数据中的错误。

我想将扫描的不同部分分成不同的线程,这样它就可以在很短的时间内完成。它大部分时间都在工作,但我不知道如何从 BackgroundWorker 返回 RichTextBox。它迫使我传递一个对象,而该对象只能返回纯文本(AFAIK)。它还告诉我无法从线程更新 RichTextBox。

在我有 BackgroundWorker 查询并格式化 RichTextBox 之后,我如何让该数据显示在主 UI 上?

4

1 回答 1

1

DoWork您应该将要在控件中BackgroundWorker显示的文本分配给. 这不一定是纯文本... e.Result 是一个. 您不想触摸 BackgroundWorker 的这一部分中的任何 UI 控件...您在后台线程中,而不是主 UI 线程。RichTextBoxe.Resultobject

接下来执行该RunWorkerCompleted部分。您在 DoWork 部分中分配的对象在 中可用e.Result。您现在回到了主 UI 线程,因此将对象转换为您需要的任何类型并将其分配给您的RichTextBox控件。

阅读Joseph Albahari 的 C# 中的线程:BackgroundWorker了解更多信息。

于 2013-05-20T03:01:06.670 回答