2012-08-04 59 views
4

可能重复:
C# WinForm Application - UI Hangs during Long-Running Operation如何防止窗体“挂起”?

我创建了一个C#Windows窗体的进度条的示例应用程序。

我的应用程序运行良好,但是当我尝试移动我的应用程序位置或最小化时,它会“挂起”,直到它的进程未被编译。

请帮助:如何防止我的应用程序“挂起”?

这是我的应用程序代码:

public partial class ProgressBar : Form 
{ 
    public ProgressBar() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     int value; 
     for (value = 0; value != 10000000; value++) 
      progressBar1.Value = progressBar1.Value + 1; 

     MessageBox.Show("ProgressBar Full", "Done", 
         MessageBoxButtons.OK, MessageBoxIcon.Information); 
     this.Close(); 
    } 

    private void ProgressBar_Load(object sender, EventArgs e) 
    { 
     progressBar1.Maximum = 10000000; 
    } 
} 
+3

使用后台工作器http://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx – yogi 2012-08-04 12:22:46

+1

我不认为问题与'ProgressBar'。你能告诉我们你的应用程序的一些代码吗? – 3aw5TZetdf 2012-08-04 12:28:56

回答

2

,以防止这将是委派的工作量,另一个线程的唯一途径。

有几类,你可以用它来做到这一点:

背景工人可能是最简单的方法,因为它提供意味着将结果返回给UI线程。与其他选项,您需要发送结果到正确的线程。