我正在尝试创建一个并行的foreach循环来处理fasta文件.我已经将fasta文件加载到ConcurrentDictionary并具有并行foreach设置但是当我去处理ConcurrentDictionary时,我的char数组会抛出一个关于空白的错误,即使ConcurrentDictionary值从不为空.我尝试调试但是使用多线程很难分辨出发生了什么.谢谢凯西
Parallel.ForEach(fastainfomation, info =>
{
line = info.Key;
name = info.Key;
secondline = info.Value;
if (name != "")
{
name = name.TrimEnd('\r', '\n');
char[] secondlineprimer = secondline.ToCharArray();
string primer = "";
string primername = "";
string primergroup = "";
for (int ii = 0; ii < 8; ii++)
{
primer += secondlineprimer[ii];
} ...
Run Code Online (Sandbox Code Playgroud)
你没有声明的事实line,name等lambda表达式中表明,他们宣称在其他地方-这意味着它们会被所有的调用共享.这本身足以使您的代码不安全.
您还应该使用Substring而不是像这样重复的字符串连接...
string primer = info.Value.Substring(0, 8);
Run Code Online (Sandbox Code Playgroud)
除此之外,您的问题并没有真正包含足够的信息来帮助您 - 请阅读http://tinyurl.com/so-hints并更加注意清晰度.