我有一个静态方法,将窗体显示为对话框。并且可以从应用程序的任何位置调用该方法,例如从普通线程到UI线程。它的电话随处可见。此方法的另一个作用是,即使它进一步调用ShowDialog()
Form
,它也不会阻止调用。最后我得到了以下代码。
public static void Method()
{ // doesn't block the call
ThreadStart threadStrart = delegate
{
DialogResult result = new FormTest().ShowDialog();
//further code removed
};
Thread thread = new Thread(threadStrart) { IsBackground = false };
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
}
一切正常并且符合预期。但是在Application.Run
之前调用此方法时会出现问题。然后它永远不会出现,直到Application.Run
被调用。然而,在设计中可能的应用程序可能会在不调用Application.Run
的情况下退出/关闭。因此,在这种情况下,用户将永远不会看到表单。
PS:那个表格不是主要形式。