日期:2014-05-18  浏览次数:21193 次

C# 线程 显示 form,form一闪就过去了,怎么办
ThreadStart ts = new ThreadStart(ShowForm);
  Thread td = new Thread(ts);
  td.IsBackground = true;
  td.Start();



  private void ShowForm()
  {
  Form frm = new Form ();
  frm.Show();
  }


请教高手

------解决方案--------------------
因为ShowForm方法返回后,线程就结束了,线程结束了,它打开的任何窗体都会被关闭,所以有界面的线程都需要一个消息循环,
------解决方案--------------------
ShowForm 方法修改一下
C# code
private void ShowForm()
{
    Form frm = new Form();
    this.Invoke((MethodInvoker)(() => frm.Show()));
}

------解决方案--------------------
楼主可以试试这样:

private void ShowForm()
{
Form frm = new Form ();
Application.Run(frm);
}
------解决方案--------------------
探讨
引用:
楼主可以试试这样:

private void ShowForm()
{
Form frm = new Form ();
Application.Run(frm);
}


靠,这方法好啊!!! 虽然使用 MethodInvoker,再加个委托,可以把form 显示出来

但是 主 form会出现 不响应鼠标事件,死那里;直到form中的load代码……

------解决方案--------------------
frm.Show();改为 frm.ShowDialog();
------解决方案--------------------
C# code
using System.Threading.Tasks;
Task.Factory.StartNew(() => { Form2 f = new Form2(); this.Invoke((MethodInvoker)(() => f.Show())); });