轻度解析异步~IProgress<T>
来源:互联网 发布:工农牌糖精淘宝网 编辑:程序博客网 时间:2024/06/10 08:31
实现进度报告
int m_percentComplete = 0;private async void StartTaskButton_Click(object sender, EventArgs e){ m_percentComplete = 0; //知识点3:在new Progrss时,会捕获当前上下文,像我这样在Button的Click // 事件中创建,那上下文是UI的,这样我可以做到更新UI,即使相关 // 的Report是在后台 var process = new Progress<int>(); //知识点2:Progress<T>,T推荐是值类型,因为在ProgressChanged事件中 // 收到新的进度改变时,已经是一个过时的数据,如果是引用类型或者 // 其他很容易变化又不容易发现,再加上异步,是否会很易出错呢 process.ProgressChanged += (o1, o2) => { if (percentComplete<=100) { m_processContentLable.Text = m_percentComplete .ToString(); m_processProcessBar.Value = m_percentComplete; }else { StartTaskButton.Enabled = true; } }; StartTaskButton.Enabled = false; await TaskAsync(process); } //知识点1:progress可以为null,因此使用时一定要判断progress是否为null,尤其是异步private async Task TaskAsync(IProgress<int> progress = null){ while (m_percentComplete<= 100) { if (progress != null) { await Task.Delay(TimeSpan.FromMilliseconds(50)); progress.Report(m_percentComplete++); } }}
效果图
写在最后
感谢我的组长Frank,因为他,我的代码有了点规范的样子,即使这是个Demo,也不含糊
1 0
- 轻度解析异步~IProgress<T>
- 轻度解析异步~Task.Delay
- \t\t同步 异步线程池
- 重庆轻度老烂腿症状
- 别说轻度玩家
- jvm轻度理解
- T-BAG解析
- HashSet<T> 源码解析
- 异步方式解析域名
- Ajax异步 解析xml
- ios JSON解析(异步)
- 同步与异步解析
- Android 异步完全解析
- AsyncTask异步任务解析
- AsyncTask 异步任务解析
- Okhtt异步解析
- 异步和解析,通用
- 异步get解析
- 仓促之间写的,有些不足,希望道友们给我建议
- 小程序-- 配置
- Redis入门(四)散列Hash
- 自学Matlab教程资源推荐
- 6、滑屏轮播——无缝循环版
- 轻度解析异步~IProgress<T>
- [Usaco07Jan] Running
- 解决Fiddler不能监听Java HttpURLConnection请求的方法
- kvm及管理工具 libvirt介绍
- [完全平方数 随机化权值Xor] UR #14 A 最强跳蚤
- Java static关键字
- nginx使用ssl模块配置HTTPS支持
- OnTriggerEnter和OnCollisionEnter的区别和用法
- php登录注册页面(新手)