代码之家  ›  专栏  ›  技术社区  ›  meirgold

用c#显示大型文本文件的最快方法是什么?[已关闭]

  •  -3
  • meirgold  · 技术社区  · 6 年前

    我正在编写一个c#实用程序,它需要过滤和显示大型文本文件(大小超过100MB)。

    该实用程序以只读模式打开文本文件,应允许滚动文本、跳转到特定行号、搜索文本模式并根据用户定义的过滤器仅显示特定行。

    我希望我的实用程序在按下“加载”按钮后很快为用户提供对文件的访问权限,这就是我遇到的问题:

    我能够克服将文本文件快速读入DataTable的问题,但是,当我想在DataGridView中显示它时,加载时间太长了。我使用的是DataGridView,因为我需要在文本的每一行附近显示额外的列。

    我在网上找到的唯一建议是每次只显示文件的一部分。这个解决方案听起来非常适合我的需要,但也带来了一些问题:

    1. 加载文件后不久,用户将希望开始执行诸如移动到特定行、搜索文本或过滤等操作,因此,将文件异步加载到DataGridView可能不是解决我的问题的最佳解决方案。

    2. 其他解决方案建议加载文件的前N行和最后M行,并在用户滚动时添加缺失的行。在这里,我遇到了将DataGridView中的行号映射到DataTable中的行号的问题:如果我滚动到末尾然后开始向上滚动,或者直接跳到特定的行号,我如何知道哪些行已经加载,哪些行还没有加载?

    以前有人解决过这样的问题吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   paparazzo    6 年前

    DataTable体积庞大且速度缓慢。

    使用WPF和GridView。

    创建一个类,然后创建一个类列表并绑定到该类。

    如果您想动态更新UI,那么ObservableCollection将在另一个线程上检索数据。