我正在使用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;
...