0
私はLAN共有とFTP共有ディレクトリの両方からファイルをダウンロードする方法を書いています。私は複数のベンダーのリストを持っています。私はこれを達成するためにタスクを使用しています。しかし、私はArrayIndexOutofBond Exceptionを取得しています。私のループ状態は正しいですが?マルチタスクc#|配列のインデックスが範囲外になる
ここにコードセグメントがあります。
vendorWiseTasksListening = new List<Task>();
for (int i = 0; i < allVendorIDs.Length; i++)
{
Task task = new Task(() => FTPMode(allVendorIDs[i]));
vendorWiseTasksListening.Add(task);
task.Start();
task = new Task(() => SharedMode(allVendorIDs[i]));
vendorWiseTasksListening.Add(task);
task.Start();
}
Task.WaitAll(vendorWiseTasksListening.ToArray());
ご協力いただければ幸いです。
あなたの共有オブジェクトがスレッドセーフであるほどスマートにならない限り、スレッドセーフではありません。つまり、複数のスレッドからエラーにアクセスすることになります。 – TomTom
どうすればそれらがスレッドセーフになることを確認できますか? –
SOMEソートのロック。共有オブジェクトを必要としない方法でプログラミングし、最後にコレクションを行います。 LOCKINGは最も簡単です(lockキーワードを読んでください)。最後に、あなたにプログラミングを教えるように頼んでいます。広すぎます。 – TomTom