當我真的不知道爲什麼時,我得到一個ArgumentOutOfRangeException
。ArgumentOutOfRangeException使用任務
Task[] downloadTasks = new Task[music.Count];
for (int i = 0; i < music.Count; i++)
downloadTasks[i] = Task.Factory.StartNew(() => DownloadAudio(music[i], lstQueue.Items[i]));
Task.Factory.ContinueWhenAll(downloadTasks, (tasks) =>
{
MessageBox.Show("All the downloads have completed!",
"Success",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
});
錯誤當for loop
運行時i = 1
,我不知道爲什麼它這樣做的時候,我確信music.Count = 1
發生。
我總是試圖這種方法作爲一種替代for loop
,得到了相同的異常:
int index = 0;
foreach (MusicFile song in music)
{
downloadTasks[index] = Task.Factory.StartNew(() => DownloadAudio(song, lstQueue.Items[index]));
index++;
}
有沒有在上面的代碼中任何可能導致此?
我也不確定這是否相關,但是當我可以使用線程完成同樣的事情而沒有任何異常。只有當我嘗試執行這個例外出現的任務時。
儘管這確實解決了上述問題,但現在我得到一個'InvalidOperationException'來試圖訪問'lstQueue.Items'。 – Minato
這是因爲'lstQueue'可能是一個UI對象,您試圖從後臺線程訪問(並且不允許)。它包含什麼? –
這是一個'ListView',它保存下載的進度百分比。我試圖同時更新每個下載的進度。但我會弄清楚如何去做我想做的事情。謝謝! – Minato