|
■No78922 (kiku さん) に返信
>
> これは、1つのプロセスに対して、UIスレッドは唯一1つであり、
> 裏で動いているメッセージループも1つであり、
> そこから、各フォームへイベント通知される仕組みなのでしょうか?
>
インスタンスを作成してShowしただけならスレッドは変わりません。
スレッドを作成してそこから新しいメッセージループを作成することは可能ですので
唯一1つではないです。
サンプル:
Public Class Form1
Dim aFrm As Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
aFrm = New Form1
aFrm.Show()
End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
Button3.Text = Threading.Thread.CurrentThread.ManagedThreadId.ToString
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim thr As New Threading.Thread(Sub()
Dim app As New App1
app.Run({""})
MessageBox.Show("app終了")
End Sub)
thr.Start()
End Sub
End Class
Public Class App1
Inherits ApplicationServices.WindowsFormsApplicationBase
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
MyBase.IsSingleInstance = False
MyBase.EnableVisualStyles = True
MyBase.SaveMySettingsOnExit = True
MyBase.ShutdownStyle = ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = New Form1
End Sub
End Class
|