异步读取文件

时间:2012-12-18 23:48:06

标签: c# asynchronous c#-5.0

我这里有这段代码用于阅读文件:

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

            }
        }
    }

1 个答案:

答案 0 :(得分:3)

避免使用async void。返回async的方法的void等效项为async Task,而不是async void

在使用字典之前,将private async void ReadFile()更改为private async Task ReadFileAsync()await结果。