只需将您的方法转换为任务 . 像@Romiox我通常使用这个扩展
public static partial class Ext
{
#region Public Methods
public static Task ToTask(Action action)
{
return Task.Run(action);
}
public static Task ToTask(Func function)
{
return Task.Run(function);
}
public static async Task ToTaskAsync(Action action)
{
await Task.Run(action);
}
public static async Task ToTaskAsync(Func function)
{
return await Task.Run(function);
}
#endregion Public Methods
}
现在让我们说你有
void foo1()
void foo2(int i1)
int foo3()
int foo4(int i1)
...然后你可以像@Romiox一样声明你的[异步方法]
async Task foo1Async(){
return await Ext.ToTask(()=>foo1());
}
async Task foo2Async(int i1){
return await Ext.ToTask(()=>foo2(i1));
}
async Task foo3Async(){
return await Ext.ToTask(()=>foo3());
}
async Task foo4Async(int i1){
return await Ext.ToTask(()=>foo4(i1));
}
要么
async Task foo1Async(){
return await Ext.ToTaskAsync(()=>foo1());
}
async Task foo2Async(int i1){
return await Ext.ToTaskAsync(()=>foo2(i1));
}
async Task foo3Async(){
return await Ext.ToTaskAsync(()=>foo3());
}
async Task foo4Async(int i1){
return await Ext.ToTaskAsync(()=>foo4(i1));
}
...
现在你使用async并等待任何fooAsync,例如foo4Async
async Task TestAsync()
{
///Initial Code
int m=3;
///Call the task
var X =foo4Async(m);
///Between
///Do something while waiting comes here
///..
var Result =await X;
///Final
///Some Code here
return Result;
}