0

アーキテクチャの概要:

言語 : クラス ライブラリを使用してクローラー タスクを実行する C# Windows フォーム プロジェクト

私は現在、私が書いたクローラー (またはクローラーのセット) を「デバッグ」するために使用されるインターフェース (UI) を作成しています。各クローラーは .dll です

インターフェイスから .dll を呼び出しますが、インターフェイスに結果を表示するために、.dll がタスク (要素のリストを内部でクロール、解析、構築) を終了するのを待つ必要はありません。

質問:

どうにかして、.dll からインターフェイスにフィードバックを送信する方法はありますか?

多分進行状況バー、または要素を読んだ後、次の要素をクロールする前にそれらをインターフェースに表示しますか?

私が欲しいのは、リアルタイムでインターフェイス(グリッドビューなど)に表示されるようなものです。

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 に答える