gpt4 book ai didi

c# - 如何使用异步执行回调委托(delegate)

转载 作者:行者123 更新时间:2023-12-04 17:53:44 27 4
gpt4 key购买 nike

我有一个回调函数,需要几秒钟的时间来处理,应该是一个异步方法,但我找不到通过 await 执行这个异步回调的方法,因为它必须是调用方法中的委托(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);}

抱歉我的英语不好,有什么想法吗?谢谢!

最佳答案

您将不得不等待第一个调用本身。

改变

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");
}
}

这里是输出

enter image description here

关于c# - 如何使用异步执行回调委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42177735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com