java让一个方法等待_如何写一个“等待”的方法?

只需将您的方法转换为任务 . 像@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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值