我正在使用Gcm网络管理器来安排任务,我需要执行其中一项任务来执行HTTP请求。到目前为止,它是用HttpWebRequest编写的,所以没有任何异步。
现在我想重用使用HttpClient编写的代码并且是异步的。
引起的问题是我无法使OnRunTask()异步,因为它需要返回一个int:
e.g。
public override int OnRunTask(TaskParams @params)
{
var result = await performSync();
if(result)
{
return GcmNetworkManager.ResultSuccess;
}
return GcmNetworkManager.ResultReschedule;
}
我能做些什么才能在这里重用异步代码?
答案 0 :(得分:2)
您可以在OnRunTask
方法中使用Task.Run,如下所示:
Task.Run( async () =>
{
// Do your stuff here
await asyncTask();
});
您不需要OnRunTask
与此技术异步
希望有所帮助
修改强>
如果您需要返回值以匹配框架/库签名,您还可以使用.Result
E.g。
var result = asyncTask().Result;
...