我试图在wp8中使用LiveConnectClient.BackgroundUploadAsync
来上传某些数据的副本。
她是我的代码:
var progress = new Progress<LiveOperationProgress>();
progress.ProgressChanged += progress_ProgressChanged;
try
{
LiveOperationResult res =
await liveClient.BackgroundUploadAsync(folderID,
new Uri(@"\shared\transfers\" + backupFile.Name, UriKind.Relative),
OverwriteOption.Overwrite, new System.Threading.CancellationTokenSource().Token, progress);
dynamic result = res.Result;
fileID = result.id;
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(ex.Message);
progress.ProgressChanged -= progress_ProgressChanged;
}
它在模拟器上工作正常,但是当我在手机上试用它时,只有当手机通过USB连接到手机时才能工作,手机连接到wifi。
答案 0 :(得分:4)
您正面临BackgroundTransfer Policies的“问题”。
操作系统对与文件大小,连接速度和设备资源相关的后台传输实施了许多限制。
这意味着当您下载/上传较大的文件时,您需要更改TransferPreferences - 例如,如果您要上传大于100 Mb的文件,您将能够这样做,但只能通过WiFi和手机连接到外部电源。
在您的应用程序中,您应该在开始下载/上传之前检查WiFi连接和电源,然后通知用户他应该(例如)打开WiFi以对这么大的文件执行操作。
您可以选择:
// small files but via 3G and on Battery
liveClient.BackgroundTransferPreferences = BackgroundTransferPreferences.AllowCellularAndBattery;
// larger files via WiFi, on Battery
liveClient.BackgroundTransferPreferences = BackgroundTransferPreferences.AllowBattery;
// huge files but only WiFi and External power
liveClient.BackgroundTransferPreferences = BackgroundTransferPreferences.None;
默认设置为none
- 所以如果您没有更改它,您的应用程序将等待外部电源和WiFi - 这可能是它通过USB(外部电源)连接时工作的原因。