PubNub访问结果为异步方法

问题描述 投票:2回答:1

我正在编写一个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
            }));

由于它不返回任务,我无法等待它,我的返回语句将在此完成之前执行。

任何建议将不胜感激。

c# async-await pubnub
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.