簡體   English   中英

如何在Dynamic對象中使用Parallel.ForEach方法

[英]How to use Parallel.ForEach method with Dynamic objects

我已經使用Parallel.ForEach功能來同時處理多個客戶端,如下所示:

Clients objClient = new Clients();
List<Clients> objClientList = Clients.GetClientList();

Parallel.ForEach<Clients>(objClientList, list =>
{
    SendFilesToClient(list);
});

但是現在,我沒有創建Client類,而是決定動態創建客戶端對象,如下所示:

var xDoc = XDocument.Load(new StreamReader(xmlPath + @"\client.xml"));
dynamic root = new ExpandoObject();

XmlToDynamic.Parse(root, xDoc.Elements().First());

dynamic clients = new List<dynamic>();

for (int i = 0; i < root.clients.client.Count; i++)
{
    clients.Add(new ExpandoObject());
    clients[i].Id = root.clients.client[i].id;
    clients[i].Name = root.clients.client[i].name;
    List<string> list = new List<string>();
    for (int j = 0; j < root.clients.client[i].emails.email.Count; j++)
    {
        list.Add(root.clients.client[i].emails.email[j].ToString());
    }
    clients[i].Email = string.Join(",", list);
}

現在我不使用Client類並動態生成對象,如何使用Parallel.ForEach功能同時處理動態對象中的多個客戶端,就像我以前使用類對象一樣?

希望我清楚自己。

此外,如果您能告訴我我的方法是否有問題或者告訴我更好的方法,我將不勝感激。

現在我不使用Client類並動態生成對象,如何使用Parallel.ForEach功能同時處理動態對象中的多個客戶端,就像我以前使用類對象一樣?

首先,將列表保存為List<T> ,並且不要將其聲明為dynamic

List<dynamic> clients = new List<dynamic>();

然后你可以用同樣的方式處理它們:

Parallel.ForEach(clients, client =>
{
    // Use client as needed here...
});

如果必須將clients聲明為dynamic clients ,則可以使用:

Parallel.ForEach((IEnumerable<dynamic>)clients, client =>
{
   //...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM