博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# async
阅读量:6329 次
发布时间:2019-06-22

本文共 1996 字,大约阅读时间需要 6 分钟。

I/O should use async, asynchronous method can be achieved:

message, delegate, multi-threading

 

Thread-safe

1.	private void button_Click(object sender, EventArgs e) 2.	      { 3.	          var task = new Task(() => 4.	          { 5.	              this.lblResult.Invoke(new Action (() => { 6.	                  this.lblResult.Text = DateTime.Now.ToLongTimeString(); 7.	              }));  8.	          }); 9.	          task.Start(); 10.	      }

Before async/await

1.	      private void button_Click(object sender, EventArgs e) 2.	      { 3.	          this.lblResult.Text = "starting to ..."; 4.	          var compute = new Func
(i => 5. { 6. long result = 1; 7. 8. for (int n = 0; n <= i; n++) 9. { 10. result += 1; 11. } 12. 13. return result.ToString(); 14. }); 15. 16. compute.BeginInvoke(int.MaxValue / 2, new AsyncCallback(ar => 17. { 18. #region 21. //this.lblResult.Text = compute.EndInvoke(ar); 22. #endregion 23. 24. this.lblResult.Invoke(new MethodInvoker(() => 25. this.lblResult.Text = compute.EndInvoke(ar))); 26. } 27. ), new object()); 28. }

After aync/await

1.	   public long DoSomething(int n) 2.	   { 3.	       long result = 1; 4.	 5.	       for (int i = 0; i <= n; i++) 6.	       { 7.	           result += 1; 8.	       } 9.	 10.	       return result; 11.	   } 12.	   private async void button_Click(object sender, EventArgs e) 13.	   { 14.	       this.lblResult.Text = "staring to ..."; 15.	       var value = await DoSomethingAsync(int.MaxValue / 2); 16.	       this.lblResult.Text = value.ToString(); 17.	   } 18.	   private Task
DoSomethingAsync(int n) 19. { 20. return Task.Run
(() => DoSomething(n)); 21. }

  

转载于:https://www.cnblogs.com/MinieGoGo/p/3422693.html

你可能感兴趣的文章
录音和朗诵的实现
查看>>
JS版cookie操作
查看>>
mail 服务
查看>>
iptables基础
查看>>
李洛克
查看>>
开发人员MySQL调优-实战篇2-让SQL使用索引详解
查看>>
Eureka VS Zookeeper
查看>>
电梯下坠时怎么办?
查看>>
理解vuex -- vue的状态管理模式
查看>>
1、时间、FHS 学习笔记
查看>>
非对称加密与安全证书看这一篇就懂了
查看>>
IDEA坑爹跟新的小BUG解决之道
查看>>
第四章第五章 环境搭建和24个命令总结
查看>>
对象拷贝类PropertyUtils,BeanUtils,BeanCopier的技术沉淀
查看>>
linux下mysql配置文件my.cnf详解[转
查看>>
JAVA 中HashSet 的实现
查看>>
Session保持状态
查看>>
Hadoop2.x与hadoop的区别
查看>>
响应式编程笔记(二):代码编写
查看>>
Nand Flash & Nor Flash
查看>>