并行foreach char数组空白

1 c# task-parallel-library

我正在尝试创建一个并行的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)

Jon*_*eet 7

你没有声明的事实line,name等lambda表达式中表明,他们宣称在其他地方-这意味着它们会被所有的调用共享.这本身足以使您的代码不安全.

您还应该使用Substring而不是像这样重复的字符串连接...

string primer = info.Value.Substring(0, 8);
Run Code Online (Sandbox Code Playgroud)

除此之外,您的问题并没有真正包含足够的信息来帮助您 - 请阅读http://tinyurl.com/so-hints并更加注意清晰度.