私はページング結果でサイトを擦るサイトスクレーパーを持っています。WaitAllブロックのブロック
すべてのページについて、私はそれをより速くするためにタスクを実行しようとしますが、フリーズします。
var pageCount = getPageCount(txtSearchQuery.Text);
var tasks = new Task[pageCount];
var link = txtSearchQuery.Text;
for (var i = 1; i <= pageCount; i++)
{
tasks[i-1] = new Task(new Action(() => { Scrape(link, i); }));
tasks[i-1].Start();
}
Task.WaitAll(tasks);
MessageBox.Show("Complete");
私は間違っていますか?私はあなたが非同期をサポートしています.NETの最新バージョンを/使用していると仮定しています
「WaitAll」はブロック動作です。タスクは並行して実行されるかもしれませんが、最長の実行中のタスクが完了するのを待っている間、 'WaitAll'はブロックされます。 –
*私は間違って何をしていますか?*すべてのタスクが完了するまで待っています*。これにより、現在の(UI)スレッドがブロックされます。 –
あなたはwpfアプリケーションを持っています、なぜあなたは 'async' /' await'を使っていませんか? – kai