0

架构概述:

语言:使用类库执行爬虫任务的 C# Windows 窗体项目

我目前正在编写一个界面(UI),它将用于“调试”我编写的爬虫(或一组爬虫)。每个爬虫都是一个 .dll

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

问题:

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

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

我想要的是实时显示在界面(gridview或其他东西)上的东西。

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

等等。

有什么好方法吗?

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

提前致谢,

马塞洛。

4

2 回答 2

2

基本上,你可以这样做:

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

并在您的 DLL 中有一些实现此功能的类。然后,您传入一个回调,您的爬虫类可以调用该回调将消息发送回调用者。

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

于 2012-06-11T18:35:26.570 回答
0

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

于 2012-06-11T18:18:26.157 回答