我有一个回调函数需要几秒钟来处理并且应该是一个异步方法,但我找不到一种方法来执行这个async回调,因为它必须是调用方法中的Delegate参数。 这是一段代码:
async Task Callback(){//do some callback..}
async Task DoSomething(Func<Task> callback){//I want to execute the callback like: await callback();}
async void Main(){ DoSomething(Callback);}
抱歉我的英语不好,有什么想法吗?谢谢!
答案 0 :(得分:0)
你必须等待第一次打电话。
更改
async void Main(){ DoSomething(Callback);}
到
async void Main(){ await DoSomething(Callback);}
之后它应该可以工作,我测试了你的示例代码。请在最后确认。
class Program
{
static void Main(string[] args)
{
(new Test()).Main();
Console.ReadKey();
}
}
public class Test
{
async Task Callback()
{
Console.WriteLine("I'm in callback");
}
async Task DoSomething(Func<Task> callback)
{
Console.WriteLine("I'm in DoSomething");
await callback();
}
public async void Main()
{
Console.WriteLine("I'm in Main");
await DoSomething(Callback);
Console.WriteLine("Execution completed");
}
}
这是输出