Jak otworzyć formularz w nici i zmusić go do pozostania otwartym
Nadal mam problemy z ustaleniem, jak tworzyć winformy w osobnym wątku interfejsu użytkownika, który omawiałemtutaj.
Próbując to zrozumieć, napisałem następujący prosty program testowy. Chcę po prostu otworzyć formularz na osobnym wątku o nazwie „wątek interfejsu użytkownika” i utrzymać wątek uruchomiony, dopóki formularz jest otwarty, umożliwiając użytkownikowi interakcję z formularzem (wirowanie jest oszustwem). Rozumiem, dlaczego poniższy błąd zawodzi i wątek zamyka się natychmiast, ale nie jestem pewien, co powinienem zrobić, aby to naprawić.
using System;
using System.Windows.Forms;
using System.Threading;
namespace UIThreadMarshalling {
static class Program {
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var tt = new ThreadTest();
ThreadStart ts = new ThreadStart(tt.StartUiThread);
Thread t = new Thread(ts);
t.Name = "UI Thread";
t.Start();
Thread.Sleep(new TimeSpan(0, 0, 10));
}
}
public class ThreadTest {
Form _form;
public ThreadTest() {
}
public void StartUiThread() {
_form = new Form1();
_form.Show();
}
}
}