文本框自动完成工作非常缓慢



我在程序中添加了自动完成选项。它运行得很好,但运行得很慢。我正在向我的收藏中添加一些东西,而这部分正在减慢我的程序。

while ((line = sr.ReadLine()) != null)
{
     Line main = new Line();
     main.LeftColumn = Time;
     main.Middle= returnValue;
     main.RightColumn = User_Description;
     list3.Add(main);
    //Here I add everything to my collection
     if (main.Middle.Source.Device != null)
     {
           suggest.Add(main.Middle.Source.Device);
     }
     if (main.Middle.ID.Device != null)
     {
           suggest.Add(main.Middle.ID.Device);
     }
}

我把我的东西添加到集合中,我必须通过显示我的类Line的对象main来访问它,而Middle是这个类的字段,它与其他类SourceID连接,其中有我想添加到集合的字符串字段。基本上,当我使用的文件很小(最多700行)时,它的工作速度不会很慢,但当我使用例如(3000行)的文件时,添加所有这些东西需要一些时间,在这个过程中,我无法使用我的应用程序。

我怎样才能让它更快地工作?有可能吗?如果有什么不清楚的地方,只要问我,我会尽力解释更多。

您可以将文件缩小到最小大小。如果文件大小小于1MB,请检查文件大小。我认为对于3000行来说,这将少于这个数字。一旦这样做,就要将文件加载到内存中并保存在集合中,然后对变量执行操作,并尝试一次性读取所有文件,而不是逐行读取(最好使用file.ReadAllLines()进行一次性读取)。在后台加载窗口时执行此操作。我认为这将极大地改变您的应用程序性能。

如果可能的话,请使用Dictionary而不是List,因为从字典中访问元素比列表快得多。我不知道你的应用程序逻辑,所以不能说你是否可以使用字典。所以要果断地做出决定。

请使用文件中的正确数据检查内存限制。如果这不能解决您的问题,请提供有关代码的更多详细信息。我会尽力模拟并帮助你。

最新更新