c#方法转异步例子
2018-06-24 00:06:45来源:未知 阅读 ()
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace 亚信电子商务 { public class Program2 { public static void Main(string[] args) { Console.WriteLine("主线程1"); AsyncTest.ToAsync(()=> { Thread.Sleep(3000); Console.WriteLine("让我用新的线程执行吧,主线程你做你的事吧"); }, () => { Console.WriteLine("回调"); }); AsyncTest.ToAsync<string>(() => { Thread.Sleep(1000); return "女猪脚和男猪脚结婚了"; }, p => { Console.WriteLine("回调结果:"+ p); }); Console.WriteLine("主线程2"); Console.ReadLine(); } } /// <summary> /// 将一个普通方法转为异步方法 /// </summary> public class AsyncTest { /// <summary> /// 把一个普通无参,无返回值的方法转为异步方法 /// </summary> /// <param name="srcAction">要转的方法</param> /// <param name="callBack">回调方法</param> public static async Task ToAsync(Action srcAction,Action callBack) { //定义一个异步无返回值的方法,下面写法可能有点绕 Func<Task> task = () => { return Task.Run(() => { srcAction(); }); }; await task(); if (callBack != null) { callBack(); } } /// <summary> /// 把一个无参有返回值的方法转为异步方法 /// </summary> /// <typeparam name="T">泛型模板类型</typeparam> /// <param name="srcFunc">被转的源方法</param> /// <param name="callBack">回调</param> public static async Task ToAsync<T>(Func<T> srcFunc, Action<T> callBack) { Func<Task<T>> task = () => { return Task<T>.Run(() => { return srcFunc(); }); }; var result = await task(); if (callBack != null) { callBack(result); } } } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:WinDbg调试.NET程序入门
下一篇:[编程] TCP协议概述
- DIV居中的经典方法 2020-06-13
- 网页搜索框里显示字段鼠标点击后就隐藏的方法 2020-05-29
- 学习web前端方法心得,从基础到深度,才能学的扎实 2020-05-19
- 【Vue】基础(数据 & 计算属性 & 方法) 2020-04-22
- CSS的3种使用方法 2020-04-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash