我正在编写一个API,该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
}));
由于它不返回任务,所以我无法等待它,并且return语句将在完成之前执行。
任何建议将不胜感激。
答案 0 :(得分:1)
我已从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;