使用async和await将同步方法包装成异步方法
Posted 三五月儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用async和await将同步方法包装成异步方法相关的知识,希望对你有一定的参考价值。
使用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实例也可以是满足委托定义的方法。
以上是关于使用async和await将同步方法包装成异步方法的主要内容,如果未能解决你的问题,请参考以下文章