using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Threading;namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        int i=0;
        public Form1()
        {
            InitializeComponent();
        }
        public void runbar()
        {
            while(true)
            {
                progressbar.Value += 1;
            }          
        }        private void button1_Click(object sender, EventArgs e)
        {
            new System.Threading.Thread(new System.Threading.ThreadStart(runbar)).Start();//创建一个新的线程并启动 
                  while (true)
            { Thread.Sleep(1000); }
        }        private void Form1_Load(object sender, EventArgs e)
        {
            CheckForIllegalCrossThreadCalls = false;
        }
    }
}我的想法是 progressbar.Value 不段增加,但下面这段代码只能执行一次,我也不知为什么,请高手看看
 public void runbar()
        {
            while(true)
            {
                progressbar.Value += 1;
            }          
        }

解决方案 »

  1.   

    LZ你是在新线程里调用RunBar函数的,ProgressBar是由主线程控制的,所以没有反应。
      

  2.   

    while (true)
      { ....; }为什么都是这个代码   这不是传说中的死循环么?
      

  3.   

     private void button1_Click(object sender, EventArgs e)
            {
                new System.Threading.Thread(new System.Threading.ThreadStart(runbar)).Start();
            }
            public void runbar()
            {
                progressBar1.Maximum = 100;//设置一个最大值
                while (true)
                {
                    if (progressBar1.Value == 100)//达到最大值的时候
                        progressBar1.Value = 0;//可以停止break或者又从0开始
                    progressBar1.Value += 1;
                    System.Threading.Thread.Sleep(100); 
                }
            }