使用线程显示窗体

本文关键字:窗体 显示 线程 | 更新日期: 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()方法表示怀疑。它是干什么的?