webmeng v2,qq堂多开补丁,食用菌保健品
异步操作时,需要展示该操作的进度
iprogress<t> interface
和progress<t> class
插一段话:读《c#并发编程经典实例》这本书偶有困惑,深感书中内容过于精炼,或许是作者故意为之,但显然对我这般知识浅薄的人来说,读起来这本书感到晦涩。偶然找到作者的个人博客,看到作者博客中对某一个知识点不同时间点上由浅至深的研究,十分欣喜。作者个人博客地址:
可查看此书作者博客中相关progress的文章reporting progress from async tasks了解更多一手知识
文中作者多次提到ui线程,很困惑,因为最近几年基本没在工作中写wpf、webform或者winform,所以作者说ui线程时很困惑,将其带入wpf、webform或者winform的使用场景,就好理解了。
不在废话,上文中伪代码例子
static async task mymethodasync(iprogress<double> progress = null) { double percentcomplete = 0; while (!done) { ... if (progress != null) progress.report(percentcomplete); } }
progress只有一个report方法,report报告进度更改
static async task callmymethodasync() { var progress = new progress<double>(); progress.progresschanged += (sender, args) => { ... }; await mymethodasync(progress); }
iprogress<t>
参数可以为空,这意味着该异步操作不需要报告更改进度。关于如何使用进度,并可以取消该方法的文章,可查看4.5 中的异步: 启用进度和异步 api 中的取消
progress<t>.progresschanged
不会抛出异常,或者说它抛出的异常会直接抛给上下文context
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论