C# 如何为Xamarin执行跨平台后台HttpClient Post?

C# 如何为Xamarin执行跨平台后台HttpClient Post?,c#,xamarin,xamarin.ios,C#,Xamarin,Xamarin.ios,我想为我的Xamarin项目实现一个跨平台上传库,它可以执行到RESTAPI的后台上传 目前我正在实现iOS客户端,并且我已经在项目设置中将HttpClient实现选择为NSUrlSession 我的上载库实现了用于同步的标准HttpClient方法。例如(为了简单而精简) 公共静态异步任务上载(字符串url,HttpContent){ return wait client.PostAsync(url、内容); } 现在,我想在用户按下UI中的“完成按钮”时实现后台上传。Xamarin提供了三

我想为我的Xamarin项目实现一个跨平台上传库,它可以执行到RESTAPI的后台上传

目前我正在实现iOS客户端,并且我已经在项目设置中将HttpClient实现选择为NSUrlSession

我的上载库实现了用于同步的标准HttpClient方法。例如(为了简单而精简)

公共静态异步任务上载(字符串url,HttpContent){
return wait client.PostAsync(url、内容);
}
现在,我想在用户按下UI中的“完成按钮”时实现后台上传。Xamarin提供了三种背景技术

我正在尝试决定是使用后台安全任务还是后台传输(iOS 7+),我希望澄清以下几点:

  • 如果我选择后台传输,那么我现在将我的上载管理器绑定到特定于平台的实现,这是正确的,因为后台传输是NSUrlSession功能,尽管HttpClient实现了NSUrlSession,但它没有实现这种特定的功能

  • 如果我选择后台安全任务,那么我正在旋转后台任务 我仍然在使用NSUrlSession,但我的Upload Manager实现可以是跨平台的,因为它以更通用的方式使用HttpClient,而不使用后台传输


感谢您的反馈。

您过去可以调用
BeginBackgroundTask
让传输在后台完成,但在最近的Xamarin更新中。
public static async Task<HttpResponseMessage> Upload(string url, HttpContent content) {
    return await client.PostAsync(url, content);
}