2012-12-18 7 views
3

나는 읽기 파일을 여기에이 코드를 가지고 :읽기 파일을 비동기 적으로

private void ReadFile() 
{ 
    using (StreamReader reader = File.OpenText("data.txt")) 
     { 
      while ((currentline = reader.ReadLine()) != null) 
      { 
       currentline = currentline.ToLower(); 
       currentline = RemoveChars(currentline); 
       currentline = RemoveShortWord(currentline); 
       AddWords(currentline); 
      } 
     } 
    } 

나는 큰 파일 비동기 그러나 여기에서 그것을 할 방법을 잘 파일을 읽고 싶습니다. 당신은 올바른 방향을 지적 할 수 있습니까?

이 내가 비동기 만들려고 것입니다 : (비동기를 사용하는 경우) 내 AddWords 방법이 작동하지 않는 것

private async void ReadFile() 
    { 

     using (StreamReader reader = File.OpenText("dickens.txt")) 
     { 
      while ((currentline = await reader.ReadLineAsync()) != null) 
      { 
       currentline = currentline.ToLower(); 
       currentline = RemoveChars(currentline); 
       currentline = RemoveShortWord(currentline); 
       AddWords(currentline); 
      } 
     } 
    } 

. 이 방법은 단어를 사전에 추가합니다.

private void AddWords(string line) 
    { 
     string[] word = line.Split(' '); 

     foreach (string str in word) 
     { 
      if (str.Length >= 3) 
      { 
       if (dictionary.ContainsKey(str)) 
       { 
        dictionary[str]++; 
       } 
       else 
       { 
        dictionary[str] = 1; 
       } 

      } 
     } 
    } 
+0

어떤 부분에서 문제가 있습니까? 너 뭐 해봤 니? – svick

+0

@svick 내가 시도한 것을 보여주기 위해 편집했습니다. –

+0

WinForm 프로젝트입니까? –

답변

2

async void을 피하십시오. void을 반환하는 메서드의 asyncasync Task이 아니라 async void이 아닙니다.

사전을 사용하기 전에 결과가 private async void ReadFile()에서 private async Task ReadFileAsync()await으로 변경됩니다.

관련 문제