客户端是反射加载各个模块, 
例如其中一个模块有60左右个控件, 第一次加载初始化这些控件需要500多毫秒, 
如果不关闭客户端只关闭这个模块,再打开这个模块加载只需要50多毫秒。请问是什么原因导致的, 再次打开模块还是需要new这些控件的,为什么时间相差这么多。

解决方案 »

  1.   

    都是一些普通初始化控件的代码, 控件有DX的和Winform的
    主要是俩次打开都走相同的代码, 但是时间差别很大, 感觉很奇怪。
    难道是第一次打开这个控件放缓存了? 但是我第二次打开又从新new了一遍啊。
      

  2.   

    目前正在尝试在程序打开时把各种控件全部new一遍然后释放掉。
    这个方法有点效果, 但是这个方法太笨了。
      

  3.   

    可以在LOAD 中什么都不做,而用异步调用来初始化程序,显示就快了,
    或加个定时器来做初始化的事。    Private Sub Setipform_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '窗体放在屏幕中央
            Dim theScreen As Rectangle
            theScreen = Screen.PrimaryScreen.Bounds()
            Me.Location = New Point((theScreen.Width - Me.Width) / 2, _
              (theScreen.Height - Me.Height) / 2)
            '初始化
            BeginInvoke(New EventHandler(AddressOf ip_Init))
        End Sub    '让窗体显示快些出来,异步与定时器相同,优先异步方式
        Private Sub ip_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) ' Handles Timer1.Tick
            System.Windows.Forms.Application.DoEvents()  '释放控制权
            FillNetworkAdapters(Id, Name, Caption)  '获得网卡 ID,名称,标题
            Dim i As Integer
            For i = 0 To (Name.Length - 1)
                Name_Combo.Items.Add(Name(i)) '将本机上的所有网卡填充到Combox
            Next
            i = Name_Combo.SelectedIndex
            If i < 0 Then Exit Sub
            wk.Text = Caption(0)
            NetId = Id(0)   '设置依据-全局变量
        End Sub