启动时出现奇怪的VB.Net性能问题

时间:2014-02-21 06:01:20

标签: .net vb.net winforms

我的exe(vb项目)启动时需要一分钟来显示主窗体。经过调查,我发现了以下内容。它似乎令人难以置信,但它正在发生。甚至很多谷歌搜索都没有帮助。

仅在exe中发生,而不是从Visual Studio运行时发生。 仅在已发布模式下发生。 发生在所有机器上。已经在所有用户的生产中发生。 连接到不同的数据库没有任何区别(不是数据加载问题)。 SQL Server探查器在那一分钟内没有显示任何活动。

记录显示,罪魁祸首似乎是以下几行:

gfrmMain = New frmMain 'frmMain is a windows form

进一步的日志记录显示,在frmMain构造函数中调用InitializeComponent()之前发生了一分钟的延迟。

Public Sub New()
    MyBase.New()

    'Reached this line after a minute - what???
    InitializeComponent()
    ...
End Sub

进程监视器显示该进程没有注册表,文件系统和网络活动。它只是闲着。

我尝试过的事情:

  1. 取消选中已发布模式的优化
  2. 删除“MyBase.New()” - 没有任何区别
  3. 我无知还有什么可尝试的?

    注意:解决方案是c#和vb项目的混合。实际上主要的vb项目和休息所有的c#项目。它发生在几个月前。直到那时一切都很好(在几秒钟内启动)。

    VS Profiler results

1 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题。我们发现它是.NET 4.5.1。我们的应用程序的目标是.net 4.0,但最近4.5.1覆盖了它。突然,12个中的一个表单需要60秒才能加载并使用300 MB的内存。尝试重新加载有效的.NET版本(对我们来说是v4.0),然后通过Windows Update停止自动更新到4.5.1(隐藏更新)并告诉我你的工作方式。我还发现关闭发布模式的优化工作 - 但我决定反对走这条路。