经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C# -- 使用委托 delegate 执行异步操作
来源:cnblogs  作者:在代码的世界里游走  时间:2018/12/14 9:39:16  对本文有异议

C# -- 使用委托 delegate 执行异步操作

委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。 与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。

委托的类型由委托的名称定义。

1. 使用委托异步执行方法

  1. class Program
  2. {
  3. public delegate void myWorking(string s);
  4. static void Main(string[] args)
  5. {
  6. Console.WriteLine("主线程开始....线程ID:{0}", Thread.CurrentThread.ManagedThreadId);
  7. myWorking myWork1 = new myWorking(w1 => Working(w1));
  8. myWorking myWork2 = new myWorking(w2 => Working(w2));
  9. myWorking myWork3 = new myWorking(w3 => Working(w3));
  10. myWorking myWork4 = new myWorking(w4 => Working(w4));
  11. myWorking myWork5 = new myWorking(w5 => Working(w5));
  12. //回调函数
  13. AsyncCallback callback=new AsyncCallback(s=>Console.WriteLine("执行完成,线程ID:{0}",Thread.CurrentThread.ManagedThreadId));
  14. //BeginInvoke异步执行,会新启动其他线程去执行代码
  15. myWork1.BeginInvoke("唱歌", callback,null);
  16. myWork2.BeginInvoke("写代码", callback, null);
  17. myWork3.BeginInvoke("查资料", callback, null);
  18. myWork4.BeginInvoke("交作业", callback, null);
  19. myWork5.BeginInvoke("检查", callback, null);
  20. Console.WriteLine("主线程结束....线程ID:{0}", Thread.CurrentThread.ManagedThreadId);
  21. Console.ReadKey();
  22. }
  23. private static void Working(string strWork)
  24. {
  25. Console.WriteLine(strWork+".....线程ID:{0}",Thread.CurrentThread.ManagedThreadId);
  26. Thread.Sleep(3000);
  27. }
  28. }

2. 执行结果:

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号