C# WinForm 异步执行耗时操作并将过程显示在界面中

private void button3_Click(object sender, EventArgs e)

{

RunAsync(() =>

{

// Just loop.

int ctr = 0;

for (ctr = 0; ctr <= 10; ctr++)

{

Thread.Sleep(2000);

RunInMainthread(() =>

{

textBox1.Text = ctr.ToString();

});

}

});

MessageBox.Show("");

} // 异步线程

public static void RunAsync(Action action)

{

((Action)(delegate()

{

action.Invoke();

})).BeginInvoke(null, null);

}

public void RunInMainthread(Action action)

{

this.BeginInvoke((Action)(delegate()

{

action.Invoke();

}));

}