gpt4 book ai didi

c# - 等待回调方法

转载 作者:太空狗 更新时间:2023-10-29 17:37:37 28 4
gpt4 key购买 nike

我正在调用第三方 API,它的方法如下所示:

myServiceClient.Discover(key, OnCompletionCallback);

public bool OnCompletionCallback(string response)
{
// my code
}

我的挑战是,我必须调用 Discover,因为它会做一些我需要的幕后工作。同时,在运行我的自定义代码之前,我必须等待 Discover 完成。更复杂的是,我不能只将我的代码放在 OnCompletionCallback 处理程序中,因为我需要从 Func 委托(delegate)调用上面的代码。简而言之,我想这样做:

Func<SystemTask> myFunction = async () =>
{
await myServiceClient.Discover(key);

// my code
}

但是,我不能这样做,因为第三方 API 使用回调方法而不是 async/await 方法。

有没有办法让回调方法在异步/等待世界中工作?

最佳答案

如果我理解正确的话,你可以这样做

public Task<bool> MyAsyncFunction()
{
var tcs = new TaskCompletionSource<bool>();

myServiceClient.Discover("somekey", s => {
//........
var res = true;
tcs.TrySetResult(res);
return res;
});

return tcs.Task;
}

现在您可以等待 MyAsyncFunction

关于c# - 等待回调方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50123585/

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