You need to start the thread by calling Start
.
Also, it is important to note that MessageBox.Show
pumps messages. That is why it is working correctly1 without an explicit call to Application.Run
on that thread. Most UI forms and controls do not work this way though. In general do not attempt to access or create any UI elements from a worker thread.
1A MessageBox
can technically work from a thread other than the main UI thread, but it can cause some weird problems. For example, this message box could get stuck behind a modal dialog displayed by the UI thread. It is for this reason, among others, that it is not advised to display UI elements from a worker thread even if they are done so with self pumping calls like Form.ShowDialog
or MessageBox.Show
.