当手机未连接到USB时,LiveConnectClient.BackgroundUploadAsync无效

我正在尝试在wp8中使用LiveConnectClient.BackgroundUploadAsync来上传一些数据的副本。

她是我的代码:

 var progress = new Progress(); 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。

您正面临着BackgroundTransfer政策的 “问题”。

操作系统对与文件大小,连接速度和设备资源相关的后台传输实施了许多限制。

这意味着当您下载/上传较大的文件时,您需要更改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(外部电源)连接时工作的原因。