在新线程中打开窗口C#例子

 在新线程中打开窗口
 
 using System.Threading;//引用此命名
 
  //创建代理。
  private Form6 myProcessBar = null; //弹出的子窗体(用于显示进度条)
  private delegate bool IncreaseHandle(int nValue,string vinfo);//代理创建
  private IncreaseHandle myIncrease = null;//声明代理,用于后面的实例化代理
  private int vMax = 100; //用于实例化进度条,可以根据自己的需要,自己改变


  private void button1_Click(object sender, EventArgs e)
  {
      Thread thdSub = new Thread(new ThreadStart(ThreadFun));
      thdSub.Start();
  }
  private void ThreadFun()
  {
      MethodInvoker mi = new MethodInvoker(ShowProcessBar);
      this.BeginInvoke(mi);
      Thread.Sleep(100);
      object objReturn = null;
      for (int i = 0; i < vMax; i++)
      {
          objReturn = this.Invoke(this.myIncrease, new object[] { 2, i.ToString() + "\r\n" });
          Thread.Sleep(50);
      }
  }
  private void ShowProcessBar()
  {
      myProcessBar = new Form6(vMax);
      myIncrease = new IncreaseHandle(myProcessBar.Increase);
      myProcessBar.ShowDialog();
      myProcessBar = null;
  }
        
Form code        
public Form6(int vMax)
{
    InitializeComponent();
    this.progressBar1.Maximum = vMax;
}
public bool Increase(int nValue,string nInfo)
{
    if (nValue > 0)
    {
        if (progressBar1.Value + nValue < progressBar1.Maximum)
        {
            progressBar1.Value += nValue;
            this.textBox1.AppendText(nInfo);
            Application.DoEvents();
            progressBar1.Update();
            progressBar1.Refresh();
            this.textBox1.Update();
            this.textBox1.Refresh();
            return true;
        }
        else
        {
            progressBar1.Value = progressBar1.Maximum;
            this.textBox1.AppendText(nInfo);
            //this.Close();//执行完之后,自动关闭子窗体
            return false;
        }
    }
    return false;
}     
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值