如何加速ClickOnce应用程序的启动

4
我有一个使用Visual Studio 2005/C# ClickOnce应用程序,它从Web服务获取所有数据。我已经优化了应用程序,使用户感觉非常流畅,即使它几乎需要从Web服务获取所有数据。

然而,启动仍然相当缓慢。似乎需要一段时间来生成第一个Web服务调用。之后就没问题了。

我该怎么做才能加快这种应用程序的启动速度?我需要生成序列化程序集吗?

3个回答

4

花些时间分析应用程序加载的程序集。这将对应用程序的加载时间产生最大的影响。如果您有仅在偶尔使用的类型,请将它们移到另一个程序集中。ClickOnce可以优化按需下载程序集,因此减少加载时所需的程序集数量将使其加载更快。

您还可以拥有一种类似的“存根”启动器,其中包含最少的程序集依赖项,动态加载其他程序集(Assembly.Load),并在它们加载后调用真正的处理程序。


3
“影响”是一个动词,表示产生作用。在心理学术语中,它也可以作为名词表示情感表达的能力,但这种意义下应该将重音放在第一个音节上。请注意,本人会尽最大努力确保翻译准确无误,但由于人工翻译存在一定偏差性,因此不能保证完全符合原意。 - Dan Davies Brackett
我想了解更多关于effect和affect的区别。 - Uri Abramson

3
你可以使用ClickOnce文件组将应用程序分成可管理的部分,并使用ClickOnce API在需要时下载组。文章“ClickOnce文件组”解释了如何做到这一点。

1

请确保您获取 .NET 3.5 SP1,因为在启动领域有显著的性能提升。特别是对于 WPF 应用程序。

至于 Web 服务调用,如果您在编译时生成序列化程序集,可以加快速度。据我所知,Visual Studio 不太聪明,无法自动知道何时生成此文件,但您可以使用 SGEN.EXE 完成。

它会创建一个单独的程序集,例如 MyApp.XmlSerializer.dll,其中包含 Web 服务调用的所有序列化代码。如果没有这个程序集,您的应用程序将尝试失败探测程序集,然后动态生成代码并在内存中编译,这就是为什么第一次 Web 服务调用很慢的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接