gpt4 book ai didi

c# - 如何在使用多线程时添加到列表?

转载 作者:太空狗 更新时间:2023-10-29 20:24:58 27 4
gpt4 key购买 nike

我对多线程有点陌生,过去只接触过它。但是我很好奇是否有可能在主线程上有一个字节数组列表,并且在单独的线程中创建新的字节数组时仍然能够添加到该列表。此外,我将使用 for-each 循环,该循环将遍历用于解析为字节数组的表单列表。所以基本上伪代码应该是这样的......

reports = new List();

foreach (form in forms)
{
newReport = new Thread(ParseForm(form));
reports.Add(newReport);

}

void ParseForm(form)
{
newArray = new byte[];
newArray = Convert.ToBytes(form);
return newArray;
}

希望上面的伪代码是有意义的。如果有人能告诉我这是否可行,并指出一个好的示例的方向,我相信我可以找出实际的代码。

最佳答案

如果你需要从多个线程访问一个集合,你应该使用同步,或者使用 SynchronizedCollection如果您的 .NET 版本是 3.0 或更高版本。

这是使您的线程可以访问集合的一种方法:

SynchronizedCollection reports = new SynchronizedCollection();

foreach (form in forms) {
var reportThread = new Thread(() => ParseForm(form, reports));
reportThread.Start();
}

void ParseForm(Form form, SynchronizedCollection reports) {
newArray = new byte[];
newArray = Convert.ToBytes(form);
reports.Add(newArray);
}

如果您使用的是 .NET 4 或更高版本,System.Threading.Tasks 的各种类提供了一种比手动管理线程更好的替代方法命名空间。在决定您的线程实现之前考虑探索这个替代方案。

关于c# - 如何在使用多线程时添加到列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10620325/

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