0

C# 5 で導入されたこれらの新しいキーワードを少し試してみたいと思います。並行して作業を分散する方法に興味があります。私はより自然にスレッド プールでそれを行いますが、この新しい非同期パターンで同じことを行うことに興味がありました。

ここに私のおもちゃの例があります.n個のルートサイトからクロールし、リンクをさらにたどるクローラーを作成しています. このアプリを作成するための適切な同時実行パターンはありますか?

4

1 に答える 1

1

使用するスレッド化テクノロジに関係なく、作業負荷を個々のワーカーに割り当てるマネージャーが必要です。マネージャーは、1 ~ N 個のワーカー プロセスを作成します。ワーカー プロセス内で、選択したターゲット スレッド化方法が実行されます。

これらの各ワーカーが準拠する必要があるインターフェイスを作成し、そのインターフェイス内で、URL を取得する開始メソッド、公開されてチェック可能なエラー条件、プロセスを停止する機能、およびプロセスを停止する機能を指定することをお勧めします。エラーがないと仮定して、作業が終了したときにデータを引き渡す方法。最後に、現在動作しているか、停止しているか、エラーで停止しているかに関する列挙型などのステータス。

次に、マネージャーは、ターゲット URL を渡し、作業ユニットを独自の内部キューに入れることで、各プロセスを簡単に作成できます。次に、マネージャーはキューを調べて、自分自身が完了したとマークされているアイテムを探し、データを GUI (?) に渡してエンド ユーザーに表示します。

では、この新しい async await パターンはどのように適合するのでしょうか? ワーカー クラス内で async await を使用して呼び出しを行い、必要に応じてデータを処理するだけです。クラスはインターフェースメソッドを介してマネージャーと通信するため、マネージャーは知る必要はありません。

async await パターンを開始するためのドキュメントを次に示します。

The Task-Based Async Await Pattern (ダウンロード ワード) by Stephen Toub

Async と Await を使用した非同期プログラミング (C# および Visual Basic)

于 2013-01-21T13:57:12.860 に答える