Windows窗体应用程序 我得到了一个包含对象的列表,并希望为此列表中的每个对象调用一个函数。每个函数都应该在一个线程中完成。只有3个线程应同时最大活动。当一个线程完成后,下一个线程应该开始,直到处理列表中的所有对象。
我尝试使用\\\"
,但得到了AggregateException(s)。你能告诉我为什么抛出异常吗?
列出我的对象:Parallel.ForEach
>> ZuInstallierendeAssetsList
这是我的代码:
List<vw_AC_FilteredPrinters2> ZuInstallierendeAssetsList
这是要调用的函数:
var options = new ParallelOptions { MaxDegreeOfParallelism = 3 };
int index = 0;
var exceptions = new ConcurrentQueue<Exception>();
Parallel.ForEach(ZuInstallierendeAssetsList, options,
(OneObject) =>
{
try
{
index++;
test(OneObject.FIRSTNAME, index);
}
catch (Exception ex) { exceptions.Enqueue(ex); }
});
if (exceptions.Count > 0) throw new AggregateException(exceptions);
处理列表的某些对象,具体取决于函数执行的时间。当我使用private void test (string _prt, int _index)
{
//Thread.Sleep(1000);
this.listBox_Console.Items.Add("DataInObject:" + _prt + ", " + _index);
}
时,在抛出异常之前,将从列表中处理2个对象。如果没有Thread.Sleep
,则会在抛出异常之前处理12个对象。该列表包含大约500个对象。