c# – 如何在使用多线程时添加到列表?
发布时间:2020-12-15 08:11:38 所属栏目:百科 来源:网络整理
导读:我是多线程的新手,过去只玩过它.但我很好奇是否有可能在主线程上有一个字节数组列表,并且仍然能够在单独的线程中创建新的字节数组时添加到该列表.此外,我将使用for-each循环,它将遍历将用于解析为字节数组的表单列表.所以基本上伪代码就像这样…… reports =
我是多线程的新手,过去只玩过它.但我很好奇是否有可能在主线程上有一个字节数组列表,并且仍然能够在单独的线程中创建新的字节数组时添加到该列表.此外,我将使用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; } 希望上面的伪代码有一定意义.如果有人能告诉我这是否可行并指出我的方向,我相信我可以找出实际的代码. 解决方法
如果需要从多个线程访问集合,则应使用同步,或者如果.NET版本为3.0或更高版本,则使用
SynchronizedCollection .
以下是使线程可以访问集合的一种方法: 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或更高版本,则可以通过 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |