2012-02-03 7 views
1

fasta 파일을 처리하기 위해 병렬 foreach 루프를 만들려고합니다. FastA 파일을 ConcurrentDictionary에로드했으며 병렬 배열을 foreach로 설정했지만 ConcurrentDictionary 내 char 배열을 처리 할 때 은 ConcurrentDictionary 값 이 비어 있지 않아도 비어 있다는 오류가 발생합니다. 디버깅을 시도했지만 여러 스레드로 인해 매우 어려웠습니다. 무슨 일이 있었는지 말할 수 있습니다. 그들은 모든 호출에 의해 공유됩니다 것을 의미합니다 - 당신 케이시병렬 foreach 문자 배열 공백

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

감사합니다. 내 첫 번째 게시입니다. 솔루션을 구현 중이므로 다시 게시하겠습니다. –