在启动时运行函数或创建类应用程序

时间:2019-08-27 19:33:14

标签: vb.net

添加到项目后,我需要自己初始化一些模块和类。
我正在寻找一种方法机制来在启动过程中调用例程(或其他方法),而无需显式调用它。
我尝试了以下方法,希望被MyInit公开后,在启动时进行初始化。
优化是在第一次引用之前阻止创建MyInit

Partial Public Module InitModule
    public MyInit As New MyStart()
    Public Class MyStart
        Public Sub New()
            Debug.Writeline("Yes, init is executed")
        End Sub
    End Class
End Module

我有几个模块可以添加/链接到多个项目;当包含它们时,它们将提供跟踪,代码验证,版本控制等。其想法是,添加或删除主代码无需更改。

不要紧,它是类,子类还是函数:我希望它无需显式调用即可运行。

1 个答案:

答案 0 :(得分:1)

感谢@Jimi的提示
在每个模块上,我都可以添加此部分代码段,扩展MyApplication类并使用Startup事件进行初始化。
此操作可以重复多次,me.Startup将根据需要进行级联。

缺点:MyApplication仅在Windows窗体上可用。

#if TARGET="winexe" then
Namespace My
    Partial Friend Class MyApplication
        Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As ApplicationServices.StartupEventArgs) Handles Me.Startup
            My.Application.Log.WriteEntry($"Application start {My.Computer.Clock.ToString}")
            ' init module stuff
            '...
        End Sub
    End Class
End Namespace
#end if

更新

我发现了一个非常简单明了的代码,可用于所有目标,而不仅仅是winexe(窗体)
这个想法是在初始化时强制创建类:

friend _startup_init as new startup_init with {.name="test"}
friend class startup_init
  public name as string
  public sub new()
     '... do here your init, 
     ' in my case a few addhandler to hook the master process
  end sub
end class