如何从 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),以便它可以在执行过程中更新可视组件本身。这样做有什么缺点吗?我这样做会破坏任何良好的实践吗?
提前感谢,
马塞洛。
基本上,你可以做这样的事情:
public interface ICrawler
{
void StartCrawling(Action<SomeCrawlingMessageType> callback);
}
并在您的 DLL 中有一些实现此目的的类。然后,传入爬网程序类可以调用的回调,以将消息发送回调用程序。
在回调中,您可以获取传递给您的数据,并通过异步调用 UI 更新来更新 UI,即使来自多个爬网程序也是如此。
在每个爬网程序 dll 中创建事件,然后在主 UI 中订阅每个事件并报告/显示结果。