架构概述:
语言:使用类库执行爬虫任务的C# Windows项目
我目前正在编写一个接口(UI),用于“调试”我编写的爬虫(或一组爬虫器)。每个爬虫都是一个.dll。
在接口中,我将调用.dlls,我不想等待它们结束任务(在内部爬行、解析和构建元素列表)来在接口上显示结果。
问题:
我是否可以以某种方式从.dll向界面发送反馈信息?
也许是一个进度条,或者在读取元素之后,在界面上显示它们,然后再爬行下一个元素?
我想要的是这样的东西在界面上实时显示(网格视图或其他东西)。
Finished Crawling College X
Finished Crawling College Y
Problem Crawling College Z - ABORTING
Finished Crawling College K诸若此类。
做这件事有什么好办法?
我考虑将Visual组件的引用发送到.dll (或安全的.dll),以便它能够在执行过程中更新可视化组件本身。这样做有什么坏处吗?我这样做是否破坏了任何好的做法?
提前谢谢你,
马塞洛。
发布于 2012-06-11 18:35:26
基本上,你可以这样做:
 public interface ICrawler
 {
     void StartCrawling(Action<SomeCrawlingMessageType> callback);
 }并在DLL中有实现此功能的类。然后传入一个回调,您的爬虫类可以调用这个回调来将消息发送回调用方。
在回调中,您可以接收传递给您的数据,并通过异步调用UI更新来更新UI,甚至是从多个爬虫中调用。
发布于 2012-06-11 18:18:26
如何在每个爬虫dll中创建事件,然后在您的主UI中订阅每个事件并报告/显示结果。
https://stackoverflow.com/questions/10985328
复制相似问题