C# LiveConnectClient.BackgroundUploadAsync在手机未连接到usb时不工作

C# LiveConnectClient.BackgroundUploadAsync在手机未连接到usb时不工作,c#,windows-phone-8,live-sdk,C#,Windows Phone 8,Live Sdk,我试图在wp8中使用LiveConnectClient.BackgroundUploadAsync,上传一些数据的副本 她是我的密码: var progress = new Progress<LiveOperationProgress>(); progress.ProgressChanged += progress_ProgressChanged; try { LiveOperationResult res = await liveClient.Backgro

我试图在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;
}
var progress=newprogress();
progress.ProgressChanged+=进度\进度变更;
尝试
{
LiveOperationResult res=
等待liveClient.BackgroundUploadAsync(folderID,
新Uri(@“\shared\transfers\”+backupFile.Name,UriKind.Relative),
OverwriteOption.Overwrite,新系统.Threading.CancellationTokenSource().Token,进度);
动态结果=恢复结果;
fileID=result.id;
}
捕获(例外情况除外)
{
系统.诊断.调试.写入线(例如消息);
progress.ProgressChanged-=进度\u ProgressChanged;
}

它在emulator上运行良好,但当我在手机上尝试它时,只有当手机通过usb连接到pc,手机连接到wifi时,它才起作用。

您正面临着手机的“问题”

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

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

谷歌首次点击“BackgroundUploadAsync仅在设备USB时工作”:)Stackoverflow FTW。