这就是我所拥有的:
Thread t = new Thread(new ThreadStart(LoginForm));
t.Start();
Thread.Sleep(7500);
t.Abort();
InitializeComponent();
public void LoginForm()
{
Application.Run(new frmLoginForm());
}
如何在中止线程之前让线程等到表单关闭。
答案 0 :(得分:2)
您可以使用ShowDialog
()方法显示表单,here是MSDN
或
最好将Thread声明为public并且只在form closing event
中中止ThreadThread 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;
答案 1 :(得分:1)
您可以尝试这样的事情,
var frmLogin = new FrmLogin();
if (frmLogin.ShowDialog() == DialogResult.OK)
{
Application.Run(new frmMainForm());
}
并在你的frmLogin中如果登录正常则将对话框结果设置为DialogResult.OK
答案 2 :(得分:0)
继续使用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()
方法。这是为了什么?