c#方法转异步例子

2018-02-08 19:02:48来源:cnblogs.com作者:胖兔人点击

分享
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 void 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 void 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);            }        }    }}

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台