Sharedインスタンスの実体化のタイミングを確認。
最初に操作/参照された瞬間に初期化が走るようですね。
Public Class Form1
Private Sub Button1_Click(...) Handles Button1.Click
Class1.Data = "AAAAA"
MsgBox(Class1.Data, , "Button1_Click")
End Sub
End Class
Public Class Class1
Private Shared mInstance As New Class1
Public Shared Data As String
Private Sub New()
System.Threading.Thread.Sleep(5000)
MsgBox(Data, , "Class1.New")
End Sub
End Class
なんとなく、Class1.Dataに代入することで Class1 が New されるかのように感じるので、 New()内では Dataプロパティに値(="AAAAA")が入っていそうですが、そうはならないよと言うことで。
また、誰かが触らない限り、Newされないので、コンストラクタに時間のかかる処理を入れてしまうと、初期化に時間がかかってレスポンスが悪いという結果になりかねないので、プロセス起動とともに初期化しておいてほしいようなものは、それなりのお手当てを忘れないようにしましょう。