如何在线程中显示一个form?
我有个程序,在程序启动后后台有好几个线程同时运行,当检测到程序在传输数据时想在右下脚弹出个form来替代messagebox,像msn那样的消息提示. 
 但是我发现在线程中不好弄,有没哪位大哥帮我下,谢谢了。 
 调试环境: 
 vista   utimate   +   vs2005(team,sp1).
------解决方案--------------------看一下BackGroundWorker控件的使用,起的线程不能直接调有UI线程.   
 用这个控件可以让线程通知UI线程去显示一个窗体.
------解决方案--------------------帮你顶!
------解决方案--------------------  你这个弹出的窗体里是不是调用了别的东西? 
 或者还是结构写的有点问题,UI线程被阻了..
------解决方案--------------------关键在这里:   
 生成Form必须在UI的主线程中,如果不是的话,必须用Invoke或BeginInvoke去同步到那个线程上. 
------解决方案--------------------在线程中用invoke方法调用委托来显示窗口!Form.BeginInvoke(delegate...)
------解决方案--------------------用BackGroundWorker就可以不用BEGININVOKE了.   
 可能还是结构之间有些问题...
------解决方案--------------------用Invoke或BeginInvoke 
 http://msdn2.microsoft.com/zh-tw/library/0b1bf3y3(VS.80).aspx
------解决方案--------------------if (InvokeRequired) 
 { 
     BeginInvoke(new ReplyCompletedDelegate(PerformReply), new object[] { result }); 
 } 
------解决方案--------------------在用Invoke或BeginInvoke去同步到主线程上的时候,重要的是要找到一个在主线程上生成的Form或 Control, 然后用它的Invoke或BeginInvoke:     
 private delegate void OpenFormDelegate();   
 //在后台数据线程中调用此function. 
 //假设myControl 是一个主线程中生成的Control 或 Form 
 private void OpenForm() 
 { 
     if (myControl.InvokeRequired) 
         myControl.Invoke(new OpenFormDelegate(DoOpenFormJob)); 
     else 
         DoOpenFormJob();   
 }   
 private void DoOpenFormJob() 
 { 
     try 
     { 
      //弹出一个Form 
     } 
     catch (ThreadAbortException Err) 
     { 
     } 
 } 
------解决方案--------------------有分就接!
------解决方案--------------------采用委托或事件的方式   
 我觉得用事件的方式是最好的,通知主线程,然后在事件代码中写出显示FORM的代码