为了简单说明问题,我将其弄成C#的windows程序
代码片断如下: private void button1_Click(object sender, System.EventArgs e)
{
Form2 f2 = new Form2();
StartThread(new ThreadStart(f2.Show));//f2.Show();
}
private void StartThread(ThreadStart target)
{
Thread doStep = new Thread(target) ;
doStep.IsBackground = true ;
doStep.Start() ;

这是Form1中的代码,主要作用是显示Form2窗口,要在子线程中调用Show显示,(运行效果跟直接调用f2.Show()一样即可,但不要在主线程中调用Show()),可像上面这样f2闪一下就消失了,请达人帮我实现在子线程中显示f2,并可在f2中进行操作,点按钮触发事件之类的就行。谢谢!

解决方案 »

  1.   

    参看:
    http://blog.csdn.net/Knight94/archive/2006/05/27/757351.aspx
      

  2.   

    Knight94(愚翁)
    :那种方法会使主窗口无法操作,如何才可以使f1,f2都可以独立操作.zhgroup(Hotel California)
    可否说的具体些,谢谢两位
      

  3.   

    to 那种方法会使主窗口无法操作,如何才可以使f1,f2都可以独立操作.线程中的控制并不影响到主窗体的操作,你需要看看你是用Show来显示还是showdialog显示。不同的显示方式会造成不同的结果。
      

  4.   

    你可以将 new Form2() 放在线程中执行,以加快装入窗体速度,然后在主线程中(Join之后)调用 f2.Show()。
      

  5.   

    上面“主线程”写错了,是指你的 Form1 的Load代码部分。
      

  6.   

    Show()本来就是闪一下就过了你的用法有问题,而且涉及到多线程的问题先还是要多参看MSDN标准帮助文档中的有关内容才行。
      

  7.   


    Knight94(愚翁):
    我看参考程序里一个主要的方法是this.BeginInvoke( mi );也就是引用了当前窗口的this,能否不用这个this,因为有时并不一定能获得当前窗口的this,..
      

  8.   

    你把Form2的实例变量定义成Form1的类成员!
      

  9.   

    JasonHeung(拥有一切不过就这样笑着哭)
    f2与f1可能是完全不相关的,它们之间也许只是通过线程启动另一个,