异步等待与GetAwaiter()。GetResult()和回调
我正在努力为我的一个项目寻找最佳实践。 它是一个典型的WPF应用程序,其UI显示项目列表,并且有一个返回结果的数据服务。
我们异步调用服务,以便不阻止UI。 我们面前有两个选择:
-
使用Async await关键字这需要标记所有方法Async from button按钮一直点击到服务层(客户端上的类调用服务器的http)以及其间的任何方法。 除了在任何地方传播异步的问题之外,这种方法工作正常
-
使用awaiter和callback在这种方法中,UI客户端调用服务层并将回调传递给服务层,服务层将http调用包装到任务中的服务器并使用GetAwaiter()。GetResult(),当http调用时完成它会调用UI客户端传递的回调。 在这种情况下,没有方法必须标记为异步,但不确定GetAwaiter()的使用
Task.Run(async()=> //等待http调用,调用回调).GetAwaiter()。GetResult();
我只是想找出哪种方法更好,如果有任何方法存在问题我应该注意
您应该一直使用async
和await
关键字,或者根本不应该使用async。
你的第二个选择并非真正异步。 它调用异步操作并与task.GetAwaiter().GetResult()
同步阻塞它。 除了非常复杂之外,它不是异步的,可能会导致死锁。
上述就是C#学习教程:异步等待与GetAwaiter()。GetResult()和回调分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/991950.html