gpt4 book ai didi

c# - 如何对 Dynamic 对象使用 Parallel.ForEach 方法

转载 作者:太空狗 更新时间:2023-10-30 00:41:52 26 4
gpt4 key购买 nike

我之前使用 Parallel.ForEach 功能来同时处理多个客户端,如下所示:

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

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

但是现在,我决定像这样动态地创建客户端对象,而不是创建客户端类:

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 功能同时处理动态对象中的多个客户端,就像我在使用类对象之前所做的那样?

希望我说清楚了。

此外,如果您能告诉我我的方法是否有问题或告诉我更好的方法,我将不胜感激。

最佳答案

Now that I don't use a Client class and generate the object dynamically, how do I use Parallel.ForEach feature to process multiple clients in the Dynamic Object concurrently as I used to do before using the class object?

首先,将您的列表保留为 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 =>
{
//...

关于c# - 如何对 Dynamic 对象使用 Parallel.ForEach 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com