【问题标题】:How to preload the WPF runtime engine or how to reduce its loading time?如何预加载 WPF 运行时引擎或如何减少其加载时间?
【发布时间】:2011-12-12 14:08:13
【问题描述】:

我们有一个用 VB6 完成的遗留应用程序。当我们向这个应用程序添加新窗口时,我们使用 WPF 创建它们,并公开一个 COM 接口以从 VB6 打开它。问题是第一次打开 WPF 窗口需要一段时间,因为系统需要加载 WPF 运行时。

有没有办法在后台加载运行时以便用户在打开窗口时不必等待?

谢谢。

【问题讨论】:

    标签: c# wpf com runtime


    【解决方案1】:

    一些想法:

    • 在 VB6 应用程序启动时创建隐藏的 WPF 窗口,因此 WPF 将加载,而用户将在应用程序中执行其他操作。
    • 如果它不适用于隐藏窗口,您仍然可以创建位置为 new Point(10000, 10000) 的 WPF 窗口,并选择不在任务栏中显示此窗口,因此此隐藏的 WPF 窗口将强制加载 .NET WPF 引擎。

    因此,您可以在应用程序启动时在后台创建不可见的 WPF 窗口,用户无需等待。

    【讨论】:

    • 我更多地考虑使用 LoadLibrary 手动加载库或类似的东西......
    • @SoMos:那根本不会做任何事情。
    • @Joshua:如果应用程序的库已经加载到内存中,一切都会更快,对吧?
    • SoMoS:几乎没有。使用 LoadLibrary 加载 .NET 组件时,大多数磁盘块甚至不会被分页。此外,您必须手动执行 GAC 解析,否则它会在您的脸上炸开。
    • 您可以使用非托管 API 手动加载 .NET、创建 AppDomain 和加载任何程序集:msdn.microsoft.com/en-us/library/dd380850.aspx(ICLRRuntimeHost::Start 将显式加载进程中的 .NET)。然而,这并非易事。
    猜你喜欢
    • 2020-11-07
    • 1970-01-01
    • 2020-05-27
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-23
    相关资源
    最近更新 更多