gpt4 book ai didi

c# - 预加载 .NET 程序集的好方法

转载 作者:IT王子 更新时间:2023-10-29 04:31:05 25 4
gpt4 key购买 nike

在我的应用程序中,我需要在单击鼠标时显示一个表单。问题在于该窗体位于另一个程序集中,并且由于程序集加载的延迟性质,很可能在按下鼠标按钮时尚未加载该程序集。所以在表格最终出现之前,我有非常明显的停顿。

我能够通过在我的初始化方法中调用 new FormFromAnotherAssembly() 来提出一个愚蠢的修复。当然,这解决了问题,暂停不再存在,但它非常丑陋。我唯一喜欢这个解决方案的地方是我不必弄乱路径和程序集名称,如果我想使用类似 Assembly.Load 的东西,我必须这样做。

那么,如果我想确保程序集在我实际需要之前加载,那么选择什么好的、可靠的解决方案呢?

提前致谢。

最佳答案

在您的 init 中显式预加载可能仍然是您的最佳选择。

typeof(SomeTypeFromAnotherAssembly) 应该足够了——还有一些无法优化的不透明方法;也许:

GC.KeepAlive(typeof(SomeTypeFromAnotherAssembly));

这避免了 new。请注意,这将被加载,但不会被 JITted 等

如果你愿意,你可以在 BG 线程上进行:

private static void LoadSomeStuff(object state) {
GC.KeepAlive(typeof(SomeTypeFromAnotherAssembly));
}
...
ThreadPool.QueueUserWorkItem(LoadSomeStuff);

关于c# - 预加载 .NET 程序集的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4895719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com