none
C# 多线程新建窗体问题 RRS feed

  • 问题

  •       我在程序中新开了一个线程,并在该线程上初始化,显示一个窗口,程序编译没有问题,但是在机器上跑的时候,那个新建的窗口只能显示标题,内容全是个白框,什么都显示不出来~~谢谢大家~~
    2011年12月28日 8:29

答案

全部回复

  • 为什么不在ui线程上建窗体?
    http://feiyun0112.cnblogs.com/
    • 已标记为答案 klvchen 2011年12月29日 2:23
    2011年12月28日 9:09
    版主
  • 我想试的代码是下面的
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    namespace WinFrom
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            public void myfrom()
            { 
                f2 show = new f2();
                show.Show();
            }
            private void button1_Click(object sender, EventArgs e)
            {
                Thread t1 = new Thread(new ThreadStart(myfrom));
                t1.Start();
                
            }
        }
    }
    用show()方法,f2窗口出现了一会就消失了,如果使用的是ShowDialog()方法就可以显示f2窗口,但是我想使用show()方法,请问各位大虾如何修改,谢谢~~
    2011年12月28日 9:20
  • 我上次看到过别人的回答,貌似是用线程SHOW窗体 线程结束后 资源就被释放掉了,所以你SHOW出来的窗体就一闪而过,而ShowDialog()能阻挡线程,所以不会关闭,推荐你还是在UI线程上SHOW
    • 已标记为答案 klvchen 2011年12月29日 2:23
    2011年12月28日 14:42