跟楼上说的一样,这是“相似”的使用办法打开窗口方法一样
关闭的时候,如果你希望在关闭线程的时候就关闭窗口的话,记得把线程的background属性改成“true”
只是线程有两个打开窗口的方式,1、本身就是窗体(在建立线程后,start线程之后,窗口就显示了,你可以自己定义窗口的show方法,这样可以得到更多的显示效果);2、作为单独的实体来打开窗口(这样的话,就和一般的用法一样了)

解决方案 »

  1.   

    我的目的是:在程序初始化及其载入初始数据时,在另一个线程中打开一个窗口(该窗口包含一个动gif动画图像,如果不在另一个线程中打开,动画将不会执行),我的方法是:
    frmSplash frm=new frmSplash();
    ThreatStart workerStart=new ThreatStart(frm.show);
    Thread threadInit=new Thread(worderStart);
    threadInit.Start();
    然后在数据加载完关闭窗体: frm.close()
    但是这样显示窗体的窗体界面不会及时刷新,动画也不会运行。
    请问这是为什么?
    有其他的方法达到我的目的吗?
      

  2.   

    得在主线程中的适当位置加Thread.Sleep(0)吧。
    要是不行可能就得在主线程中使用frm.Invoke函数吧——
    先在主线程类中先定义委托(后面Control.Invoke方法将引用该委托):
    public delegate void DelegateRefresh();
    DelegateRefresh dlgtRfrsh = new DelegateRefresh(frm.Refresh);
    然后在适当的位置刷新frm窗体,强制使其工作区无效并立即重绘自己和任何子控件:
    frm.Invoke(dlgtRfrsh);
    要是再不行,把两个线程颠倒一下吧。
      

  3.   

    http://www.yesky.com/20030225/1653758.shtml