Scintilla.NET 加载缓慢
Posted
技术标签:
【中文标题】Scintilla.NET 加载缓慢【英文标题】:Scintilla.NET slow loading 【发布时间】:2010-12-16 15:56:05 【问题描述】:我正在使用名为 Scintilla.NET 的 .NET 包装器使用 Scintilla。创建它的实例时,即:
Dim c As New ScintillaNet.Scintilla
Me.Controls.Add(c)
第一次加载几乎需要一秒钟。其他时候大约是 150 毫秒。实际上,这在我的情况下是不可接受的,例如加载一次 10 个文件几乎需要两秒钟。
Scintilla(或 Scintilla.NET)确实很慢,还是我做错了什么?
【问题讨论】:
我对 Scintilla 不太熟悉,但也许实际上不能一次打开 10 个文件,因为它们可能不会一次全部显示(我想有一个选项卡接口涉及某处?),而是在需要时加载它们中的每一个(即,当活动选项卡更改为代表该文档的选项卡时)。这就是我最近在我的一个应用程序中所做的,并获得了一个非常流畅的界面,可以“懒惰地”加载其数据。当然,提供“加载”指示器也会减少感知时间,即使实际 ms 相同甚至更大。 它确实是一个选项卡式编辑器。我不太喜欢你所说的延迟加载,但也许这是一个有趣的解决方案,因为你可以将加载时间分散到更长的时间段,而不是一次两秒。 【参考方案1】:我不会说 Scintilla 很慢。如果只是在第一次创建控件时很慢,这可能是因为当时加载了 Scintilla.dll,而您所经历的 1 秒可能是系统加载 dll 所需的时间。
如果是这种情况,我建议您在应用程序启动时(例如在初始屏幕上)加载 dll(通过创建虚拟控件) - 如果这在您的场景中是可以接受的。
【讨论】:
事实上,我已经在这样做了。这解决了第一次加载,但所有其他实例仍会导致约 150 毫秒的冻结时间。因此,当一次创建多个控件时,它会使我的应用程序挂起相当长的时间。 在这种情况下,150 毫秒可能是实例化控件所需的时间,因此在这种情况下您无需进行太多优化。以上是关于Scintilla.NET 加载缓慢的主要内容,如果未能解决你的问题,请参考以下文章
Scintilla.NET Autocomplete 自动选择第一个元素 (C#)
检测光标位于 Scintilla NET 中的注释或字符串上方