private void button1_Click(object sender, EventArgs e) { (new Thread(new ThreadStart(() => { System.Threading.Thread.Sleep(3000); DoTask(); } ))).Start(); } void DoTask() { if (InvokeRequired) { BeginInvoke(new MethodInvoker(DoTask)); return; } progressBar1.Value++; }