2012-12-18 54 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); 
      } 
     } 
    } 

我想讀的異步大文件,但不知道如何來寫文件。你能指出正確的方向嗎?

這是我試圖使它異步:

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); 
      } 
     } 
    } 

這似乎是我的AddWords方法不工作(使用異步時)。此方法爲字典添加單詞:

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的方法的async等效爲async Task,而不是async void

更改private async void ReadFile()private async Task ReadFileAsync()await使用字典前的結果。