2012-12-18 117 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使用字典前的结果。