BackgroundWorker
을 사용해야합니다. http://www.dotnetperls.com/progressbar
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, System.EventArgs e)
{
// Start the BackgroundWorker.
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 1; i <= 100; i++)
{
// Wait 100 milliseconds.
Thread.Sleep(100);
// Report progress.
backgroundWorker1.ReportProgress(i);
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// Change the value of the ProgressBar to the BackgroundWorker progress.
progressBar1.Value = e.ProgressPercentage;
// Set the text.
this.Text = e.ProgressPercentage.ToString();
}
}
}
또는 당신은 같은 것을 사용할 수 있습니다 :
좋은 예는 여기에서 찾을 수 있습니다 좀 더 표준화 된 가볍고, 견고하고 확장 참조 등의 작업에 TPL을 사용하는 것이 좋습니다
private void StartButtonClick(object sender, EventArgs e)
{
var t1 = new Thread(() => ProgressBar(value));
t1.Start();
}
private void ProgressBar(value1)
{
ProgressBar.BeginInvoke(new MethodInvoker(delegate
{
ProgresBar.Value++
}));
}
먼저 BackgroundWorker 클래스를 살펴 보겠습니다. – vcsjones
MSDN은 친구입니다. BackgroundWorker 클래스의 설명서는 시작하기에 좋은 곳입니다. http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v=vs.100).aspx –
스레드는 시작하기에도 좋습니다. – Rafael