2012-02-03 15 views
1

私は、fastaファイルを処理する並列foreachループを作成しようとしています。 私は、ConcurrentDictionaryの中にfastaファイルをロードしましたが、並行して foreachを設定しましたが、ConcurrentDictionaryのchar配列を処理するときに は、ConcurrentDictionaryの値 が空白にならなくても空白に関するエラーをスローします。デバッグしようとしましたが、複数のスレッドでは非常に難しかった 何が起こっていたのかを教えてください。彼らはすべての呼び出しで共有することがありますことを意味している - はあなた ケーシー並列foreach char配列空白

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]; 
     } ... 
+0

エラーはどこで発生しますか? – Tudor

+0

「私」とは何ですか? (i = i + 1;) – Maxim

+0

@maxim申し訳ありません申し訳ありませんが、私は –

答えて

7

あなたがlineを宣言していないという事実に感謝し、ラムダ式内nameなどは、彼らが他の場所で宣言されていることを示唆しています。それだけでコードが安全でないものになります。

またさらにあなたを助けるために、あなたの質問は本当に十分な情報が含まれていません...むしろ、このような繰り返し文字列の連結よりも、その向こう

string primer = info.Value.Substring(0, 8); 

Substringを使用する必要があります - http://tinyurl.com/so-hintsを読んで、より多くの注意を払ってください。明確にする。

+0

これは私の初めての投稿です私はあなたのソリューションを実装していると私は再び投稿します –