使用async和await将同步方法包装成异步方法

来源:互联网 发布:免root的手机数据恢复 编辑:程序博客网 时间:2024/05/20 05:27

使用c#5.0引入的async和await,可以更简单的进行异步编程。本文使用async和await将同步方法包装成异步方法。

using System;using System.Threading.Tasks;namespace YlBCL{    public class AsyncHelper    {        public static async void RunAsync(Action action, Action callback)        {            await Task.Run(() => { action(); });            if (callback != null) callback();        }        public static async void RunAsync<TResult>(Func<TResult> function, Action<TResult> callback)        {            TResult tResult = await Task.Run(() => { return function(); });            if (callback != null) callback(tResult);        }    }}

下面是使用AsyncHelper类的示例代码。

 Action action = new Action(() =>{     int s = 0;     for (int i = 1; i < 10000; i++)     {          s = i;     }});Action callback = new Action(() =>{      Console.WriteLine("success");});AsyncHelper.RunAsync(action , callback);Func<string> action = new Func<string>(() => {    int s = 0;    for (int i = 1; i < 10000; i++)    {          s = i;    }    return s.ToString();});Action<string> callback = new Action<string>((s) =>{      Console.WriteLine(s); });AsyncHelper.RunAsync(action , callback);

传入的Action实例也可以是满足委托定义的方法。

0 0
原创粉丝点击