如何从 dll 调用向可视界面提供反馈

本文关键字:界面 可视 dll 调用 | 更新日期: 2023-09-27 18:36:53

架构概述:

语言 : C# Windows 窗体项目使用类库执行爬网程序任务

我目前正在编写一个接口(

UI),该接口将用于"调试"我编写的爬虫(或一组爬虫)。每个爬虫都是一个.dll

在界面

中,我将调用 .dlls,我不想等待它们结束其任务(在内部抓取、解析和构建元素列表)以在界面上显示结果。

问题:

有什么方法可以以某种方式将.dll的反馈发送到界面?

也许是一个进度条,或者在阅读元素后,在抓取下一个元素之前将它们显示在界面上?

我想要的是实时显示在界面(网格视图或其他东西)上

Finished Crawling College X
Finished Crawling College Y
Problem Crawling College Z - ABORTING
Finished Crawling College K

等等。

有什么

好方法可以做到这一点?

我想过将可视组件的引用发送到.dll(或辅助.dll),以便它可以在执行过程中更新可视组件本身。这样做有什么缺点吗?我这样做会破坏任何良好的实践吗?

提前感谢,

马塞洛。

如何从 dll 调用向可视界面提供反馈

基本上,你可以做这样的事情:

 public interface ICrawler
 {
     void StartCrawling(Action<SomeCrawlingMessageType> callback);
 }

并在您的 DLL 中有一些实现此目的的类。然后,传入爬网程序类可以调用的回调,以将消息发送回调用程序。

在回调中,您可以获取传递给您的数据,并通过异步调用 UI 更新来更新 UI,即使来自多个爬网程序也是如此。

在每个爬网程序 dll 中创建事件,然后在主 UI 中订阅每个事件并报告/显示结果。