Xamarin Gcm Network Manager await httpclient



我正在使用Gcm网络管理器来调度任务,在其中一个任务中,我需要执行HTTP请求。到目前为止,它是用HttpWebRequest编写的,所以没有什么是异步的。

现在我想重用用 HttpClient 编写的异步代码。

出现的问题是我无法使 OnRunTask() 异步,因为它需要返回一个 int:

例如

public override int OnRunTask(TaskParams @params)
{
    var result = await performSync();
    if(result)
    {
        return GcmNetworkManager.ResultSuccess;
    }
    return GcmNetworkManager.ResultReschedule;
}

我能做些什么才能在这里重用异步代码?

您可以在OnRunTask方法中使用 Task.Run,如下所示:

 Task.Run( async () =>
        {
             // Do your stuff here
             await asyncTask();
        });

您无需使用此技术进行异步OnRunTask

希望对你有帮助

编辑

如果需要返回值与框架/库签名匹配,也可以使用 .结果

例如

var result = asyncTask().Result;
...

最新更新