ShowDialog メソッド
このスレ。→ @IT:VB2005でSub MainからFormのShow
ShowDialog メソッドはこれですね。→Form.ShowDialog メソッド
さてさて、ShowDialog メソッドもメッセージループが開始されるわけですよね?なので以下のように書けますですね。
ここで以前、Application.Runをゴソゴソしていた時に同一スレッド内でApplication.Runを重ねると、InvalidOperationException が発生したことを思い出しました。
[Visual Basic]
Imports System
Imports System.Windows.Forms
Public Class Program
Public Shared Sub Main()
Using f1Dialog As New Form1
f1Dialog.ShowDialog() ' メッセージループが開始されるわん。
End Using
Using f1Run As New Form1
Application.Run(f1Run) ' メッセージループが開始されるわん。
End Using
End Sub
End Class
ならShowDialog→Application.Runはどうよ?
単一スレッド上で 2 回目のメッセージ ループを開始することは有効な操作ではありません。Form.ShowDialog を使用してください。
InvalidOperationExceptionが発生さ。・・・ダメかぁ。Form.ShowDialogがメッセージ ループがらみで独自の実装ってことはなさそうだし、中身はどっかでおんなじ処理を噛んでそうなんですが・・・何かしら分岐があるのかなぁ。
[Visual Basic]
Imports System
Imports System.Windows.Forms
Public Class Program
Public Shared Sub Main()
Using f1 As New Form1
f1.ShowDialog()
End Using
End Sub
End Class
Public Class Form1
Inherits Form
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
Using f1 As New Form1
Application.Run(f1)
End Using
End Sub
End Class
ってことはForm.ShowDialogは「単一スレッド上で 2 回目のメッセージ ループを開始する」のとは違うのか・・・。単一スレッド上ではないってことかしら?
単一スレッド上で 2 回目のメッセージ ループを開始することは有効な操作ではありません。Form.ShowDialog を使用してください。