【发布时间】:2016-04-11 06:43:00
【问题描述】:
我正在编写一个从 LAN 共享目录和 FTP 共享目录下载文件的方法。我有多个供应商的列表。我正在使用任务来实现这一点。但我得到 ArrayIndexOutofBond 异常。虽然我的循环条件是对的?
这里是代码段。
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());
任何帮助将不胜感激。
【问题讨论】:
-
好吧,除非你的共享对象足够聪明以保证线程安全......它们不是线程安全的,这意味着你从多个线程访问它们时会出错。
-
那么我怎样才能确保它们成为线程安全的呢?
-
锁定了一些排序。以不需要共享对象并在最后进行收集的方式进行编程。 LOCKING 是最简单的(阅读 lock 关键字)。最后:你要求我们教你编程。太宽泛了。
标签: c# task indexoutofboundsexception