闪烁.NET慢速加载

闪烁.NET慢速加载,.net,scintilla,.net,Scintilla,我使用的是斯金塞拉,它使用的是.NET包装,名为斯金塞拉.NET。创建其实例时,即: Dim c As New ScintillaNet.Scintilla Me.Controls.Add(c) 第一次加载几乎需要一整秒钟的时间。其他时间大约为150毫秒。实际上,在我的情况下,这是不可接受的,因为一次加载10个文件几乎需要两秒钟 斯金塞拉(或斯金塞拉.NET)真的很慢,还是我做错了什么?我不会说斯金塞拉很慢。如果仅在第一次创建控件时速度较慢,这可能是因为此时加载了闪烁体.dll,而

我使用的是斯金塞拉,它使用的是.NET包装,名为斯金塞拉.NET。创建其实例时,即:

   Dim c As New ScintillaNet.Scintilla
   Me.Controls.Add(c)
第一次加载几乎需要一整秒钟的时间。其他时间大约为150毫秒。实际上,在我的情况下,这是不可接受的,因为一次加载10个文件几乎需要两秒钟


斯金塞拉(或斯金塞拉.NET)真的很慢,还是我做错了什么?

我不会说斯金塞拉很慢。如果仅在第一次创建控件时速度较慢,这可能是因为此时加载了闪烁体.dll,而您所经历的1秒可能是系统加载dll所需的时间


如果是这种情况,我建议您在应用程序启动时(例如在启动屏幕上)加载dll(通过创建一个虚拟控件)——如果这在您的场景中是可以接受的话。

我不会说闪烁很慢。如果仅在第一次创建控件时速度较慢,这可能是因为此时加载了闪烁体.dll,而您所经历的1秒可能是系统加载dll所需的时间


如果是这种情况,我建议您在应用程序启动时(例如在启动屏幕上)加载dll(通过创建一个虚拟控件)——如果在您的场景中这是可以接受的。

事实上,我已经在这样做了。这解决了第一次加载的问题,但所有其他实例仍会导致约150毫秒的冻结时间。因此,当一次创建多个控件时,我的应用程序会被挂起相当长的时间。在这种情况下,150毫秒可能是实例化控件所需的时间,因此在这种情况下,您没有太多的优化。事实上,我已经在做这件事了。这解决了第一次加载的问题,但所有其他实例仍会导致约150毫秒的冻结时间。因此,当一次创建多个控件时,我的应用程序会被挂起相当长的时间。在这种情况下,150毫秒可能是实例化控件所需的时间,因此在这种情况下,您没有太多需要优化的时间。我对闪烁体不太熟悉,但是,实际上不可能一次打开这10个文件,因为它们可能不会一次全部可见(我认为在某个地方涉及到一个选项卡式界面?),而是在需要时加载每个文件(即,当活动选项卡更改为表示该文档的选项卡时)。这就是我最近在我的一个应用程序中所做的,我得到了一个非常流畅的界面,可以“懒洋洋地”加载数据。当然,提供“加载”指示器也会减少感知时间,即使实际ms相同或更大。它确实是一个选项卡式编辑器。我对你所谓的延迟加载不是很感兴趣,但也许这是一个有趣的解决方案,因为你可以将加载时间延长一段时间,而不是一次两秒。我对闪烁体不太熟悉,但可能不会一次打开10个文件,因为它们可能不会一次全部可见(我认为在某个地方可能会涉及到一个选项卡式界面?),但在需要时(即当活动选项卡更改为表示该文档的选项卡时)加载每个选项卡。这就是我最近在一个应用程序中所做的,并实现了一个非常流畅的界面,可以“惰性地”加载数据。当然,提供“加载”指示器也可以减少感知时间,即使实际的ms相同或更大。它确实是一个选项卡式编辑器。我不太喜欢你所说的惰性加载,但它可能是一种交互测试解决方案,然后将加载时间延长,而不是一次两秒。