WebからダウンロードするURLは約800です。私はクラスを持っています:HttpDownloader.cs HttpWebRequestクラスを使用して、HTMLページをダウンロードして取得します。その後、私はRegexによってページを読み上げます。BackgroundWorkerコンポーネントによって多くのページをダウンロードします。
私はBackgroundWorkerコンポーネントを使用したいですが、私はそれを行う方法がわかりませんすべてページ。ループ、またはそのようなものによって。
マイコード:
私はThreadPoolのの使用を試みたが、それは本当に問題をしました。私は4つのURLで試してみて、うまくいきませんでした。
foreach (string link in MyListOfUrls)
{
ThreadPool.QueueUserWorkItem((o) => {
HttpDownloader httpDownload = new HttpDownloader(link);
string htmlDoc = httpDownload.GetPage();//get the html of the page
HtmlDocument doc=doc.LoadHtml(htmlDoc);//load html string to doc for pharsing
DoPharsing();//my func for pharsing
Save();//save into dataBase
});
}
私はThreadPoolのを使用する場合、私は例外を取得私のFUNC内のデータベースとのDataTableへの接続に使用するので:
前の関数の評価 がタイムアウトしたため無効」機能の評価はあなたが継続しなければなりません。関数 を再度有効にするための実行。
DataTableからデータを取得できません。たぶん私はすべてをダウンロードする必要があり、その後にpharsingして保存しますか?
BackgroundWorkerコンポーネントによって非同期に変更する方法はありますか?
p.s. Async Tpcで私にアドバイスしてはいけません。なぜなら私はそれをダウンロードできなかったからです。
おかげ
複数のダウンロードを同時に実行したい場合や、ダウンロードをGUIから切り離したい場合(非同期にする) (構文解析ではなく、構文解析しています) – digEmAll
@digEmAll、私は同時に複数のダウンロードを行いたいと思います。 ** **すべての**ページをより迅速にダウンロードする。 –
何を試しましたか?バックグラウンドワーカークラスのインターネット上には数多くのチュートリアルがあります。あなたはこれらのチュートリアルのどれをどれだけ取得しましたか、具体的にあなたは何をしていますか? BackgroundWorkerを使用してコードを投稿してください。 –