我正在编写一个API,它将授予对pubnub通道的访问权限,但需要等待授予访问权限并返回结果。有人可以建议我如何等待回复吗?
.Async
的返回类型无效
我调用授予访问权限的方法如下:
pubnub.Grant()
.Channels(new string[] {
"channel"
})
.Read(true)
.Write(true)
.AuthKeys(new List<string>() { "xyz" }.ToArray())
.TTL(0)
.Async(new PNAccessManagerGrantResultExt((result, status) =>
{
//I need to await this and return the result in my method
}));
由于它不返回任务,我无法等待它,我的返回语句将在此完成之前执行。
任何建议将不胜感激。
我从PubNub支持发送了以下解决方案来解决此问题,请参阅下文
var resultTask = new TaskCompletionSource<PNAccessManagerGrantResult>();
pubnub.Grant()
.Channels(new string[] {
"channel"
})
.Read(true)
.Write(true)
.AuthKeys(new List<string>() { "xyz" }.ToArray())
.TTL(0)
.Async(new PNAccessManagerGrantResultExt((result, status) =>
{
resultTask.TrySetResult(result);
}));
var syncResult = resultTask.Task.Result;