使用线程显示窗体
本文关键字:窗体 显示 线程 | 更新日期: 2023-09-27 17:57:42
这就是我得到的:
Thread t = new Thread(new ThreadStart(LoginForm));
t.Start();
Thread.Sleep(7500);
t.Abort();
InitializeComponent();
public void LoginForm()
{
Application.Run(new frmLoginForm());
}
如何让线程等到窗体关闭后再中止线程。
您可以使用ShowDialog
()方法来显示表单,这里是MSDN
或
最好将线程声明为公共,并且只在表单关闭事件中中止线程
Thread t = new Thread(new ThreadStart(LoginForm));
t.Start();
InitializeComponent();
public void LoginForm()
{
LoginForm frmLogin=new LoginForm();
DialogResult dr = frmLogin.ShowDialogue();
if (dr == DialogResult.Yes)
{
t.Abort();
}
}
在表单关闭事件中将DialogResult
属性设置为
this.DialogResult = DialogResult.Yes;
你可以试试这样的东西,
var frmLogin = new FrmLogin();
if (frmLogin.ShowDialog() == DialogResult.OK)
{
Application.Run(new frmMainForm());
}
在frmLogin中,如果登录正常,则将来自对话框的结果设置为DialogResult.OK
继续SumeshK的解决方案,我将采用完全不同的方法:
public void SomeMethod()
{
Thread t = new Thread(new ThreadStart(LoginForm));
t.Start();
t.Join();
InitializeComponent();
}
public void LoginForm()
{
LoginForm frmLogin=new LoginForm();
frmLogin.ShowDialog();
}
方法ShowDialog
本身将阻止线程终止/结束。这应该行得通。但我对InitializeComponent()
方法表示怀疑。它是干什么的?