C#如何使用异步编程
C#异步方法:提供了一种简便方式完成可能需要长时间运行的工作,而不必阻止调用方的线程。 异步方法的调用方可以继续工作,而不必等待异步方法完成。
代码实现过程:
/// <summary>
/// 异步方法,解决长等待问题
/// </summary>
/// <param name="action"></param>
/// <param name="entity"></param>
/// <returns></returns>
public async Task AsyncAdd(Func<FAQ_Info, VMessage> fun, FAQ_Info entity)
{
return System.Threading.Tasks.Task.Run(() =>
//解决UI阻塞,这种并不是真正的并行执行,而是开了一个新线程异步执行代码段
//主UI不会等待它返回结果的,如果要与主线程合作开发,即并行开发,需要加await来获取Task的返回结果
{
fun(entity);
});
}
异步的三种模式:
1. 等待模式,在发起了异步方法以及做了一些其它处理之后,原始线程就中断,并且等待异步方法完成之后再继续。
2. 轮询模式,原始线程定期检查发起的线程是否完成,如果没有则可以继续做一些其它的事情。
3. 回调模式,原始线程一直在执行,无需等待或检查发起的线程是否完成。在发起的线程中的引用方法完成之后,发起的线程就会调用回调方法,由回调方法在调用EndInvoke之前处理异步方法的结构。
2023-06-12 广告