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されないので、コンストラクタに時間のかかる処理を入れてしまうと、初期化に時間がかかってレスポンスが悪いという結果になりかねないので、プロセス起動とともに初期化しておいてほしいようなものは、それなりのお手当てを忘れないようにしましょう。