从 WPF 应用程序中的任何文件输入都非常慢

Input from any file in WPF Application is very Slow

我有一个 WPF 应用程序,它从用户那里获取输入文件路径,然后在后端打开文本文件并尝试从文件中读取单个字符。

        fs = File.OpenRead(fileName);
        var sr = new StreamReader(fs);

        int c;
        while ((c = sr.Read()) != -1) 
        { 
            Console.Write((char)c); //to check character read from file
            try
            {
                frequencyMap.Add((char)c, 1); 
            }
            catch
            {
                frequencyMap[(char)c] += 1;
            }
        }

这里的frequencyMap是字典,其中存储了字符和它的频率。 这是一种方法,无论我做什么,即使我尝试阅读整个文本,从文件中读取总是很慢。在输出 window 我看到

所选区域是文件输入的部分。 最大 2KB 的文件很好,但是读取 20KB 这样的文件真的很困难。

现在我读到使用线程可以解决这个问题,我只是不知道如何解决。

我的问题是如何快速从文件中读取数据?如果使用线程是解决方案,那么如何实现它?

我是新手,请帮助我。 谢谢

首先我希望Console.WrieLine是纯粹的测试代码。为每个字符写入控制台会大大减慢您的处理速度。

其次,从您分享的屏幕截图来看,您的应用程序抛出了很多异常。在紧密循环中抛出异常也不便宜。

第三,我建议您分析您的应用程序(visual studio 提供分析器)以帮助您查明您的应用程序究竟将时间花在哪里。

不要按字符读取,例如按行读取,循环处理每个字符串。 Exception 也不是检查键是否存在于字典中的方法。

using (var sr = new StreamReader(fileName))
{
    while (!sr.EndOfStream) 
    {
        string s = sr.ReadLine();
        Debug.WriteLine(s); //to check string read from file
        foreach (char c in s)
        {
            if (frequencyMap.ContainsKey(c))
                frequencyMap[c]++;
            else
                frequencyMap.Add(c, 1); 
        }
    }
}