私は、ウェブサイトからデータを取得するプログラムを持っています。つまり、最初にカテゴリとサブカテゴリを取得し、カテゴリテーブルに保存します。次に、対応するカテゴリの URL にヒットし、製品を取得します。
カテゴリの URL をトラバースする外側のループと、ページネーションを処理する内側のループ、および製品を取得するもう 1 つの内側のループがあります。
これが私のコードです
For item As Integer = 0 To tempTable.Rows.Count - 1
'main loop
For cycleCount As Integer = -1 To pageNodes.Count - 1
'pagination loop
For Each product As HtmlNode In products
'retrive products here
Next
Next
Next
通常、私のコードは正常に動作しています。しかし、マルチスレッドを適用したい。そのため、メイン ループで TPL (Task Parallel Library) を使用しました。
すなわち
Parallel.For(0, tempTable.Rows.Count - 1, Sub(item)
'main loop
For cycleCount As Integer = -1 To pageNodes.Count - 1
'pagination loop
For Each product As HtmlNode In products
'retrive products here
Next
Next
End Sub)
2 から 4 のレコードのみが挿入されていますが、アイテムが重複しており、その後コードがクラッシュしますこのエラーが発生しました:「1 つ以上のエラーが発生しました」
では、コードにマルチスレッドを実装するにはどうすればよいですか?