XTask是一个轻量级客户端异步任务类库,简单易用.
.Net Framework 2.0或以上.
无返回值的异步任务
private AsyncTask task = null;
/// <summary>
/// 执行任务
/// </summary>
private void Start()
{
task = new AsyncTask(DoSomething);//创建一个异步任务
//执行任务
task.Run(ex =>
{
//异步方法执行完DoSomething()后同步执行下面的代码
//判断任务是否出现异常
if (ex != null)
{
MessageBox.Show(ex.ToString());//输出异常
}
else//任务完成
{
MessageBox.Show("Task completed");//任务完成
}
});
}
/// <summary>
/// 取消任务
/// </summary>
private void Cancel()
{
task.Cancel();
}
/// <summary>
/// 执行一个方法,需要耗时3秒钟
/// </summary>
private void DoSomething()
{
Thread.Sleep(3000);
}带返回值的异步任务
private AsyncTask<string> taskWithResult = null;
/// <summary>
/// 执行任务
/// </summary>
private void Start()
{
taskWithResult = new AsyncTask<string>(DoSomethingWithResult);
taskWithResult.Run((result, ex) =>
{
//异步方法执行完DoSomethingWithResult后同步执行下面的代码
//判断任务是否出现异常
if (ex != null)
{
MessageBox.Show(ex.ToString()); //输出异常
}
else //任务完成
{
MessageBox.Show(result); //任务完成,显示DoSomethingWithResult返回的结果
}
});
}
/// <summary>
/// 取消任务
/// </summary>
private void Cancel()
{
taskWithResult.Cancel();
}
/// <summary>
/// 执行一个方法,带返回值
/// </summary>
/// <returns>返回一个字符串</returns>
private string DoSomethingWithResult()
{
Thread.Sleep(3000);
return "Task completed";
}更多详见Demo代码