PubNub访问导致异步方法

时间:2019-03-18 11:37:57

标签: c# async-await pubnub

我正在编写一个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语句将在完成之前执行。

任何建议将不胜感激。

1 个答案:

答案 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;