使用方法
Forms窗体中的代码,请自行添加一个button1,一个textBox1
private void button1_Click(object sender, EventArgs e)
{
AsyncUtils utils = new AsyncUtils();
utils.Control = this;
utils.State.Data = textBox1.Text;
//此方法在新的线程中执行
utils.AsyncOperation = new Action<AsyncState>(state =>
{
state.Data = "Hello " + state.Data.ToString();
System.Threading.Thread.Sleep(3000);
//throw new Exception("this is error");
});
//此方法在主线程中执行
utils.AsyncOperationCallback = new Action<AsyncState>(state =>
{
if (state.Error != null)
{
this.textBox1.Text = state.Error.Message;
}
else
{
this.textBox1.Text = state.Data.ToString();
}
});
utils.BeginInvoke();
}