C# 背景传输请求连接外部电源错误

C# 背景传输请求连接外部电源错误,c#,windows-phone-8,C#,Windows Phone 8,我使用BackgroundTransferRequest类在我的wp8应用程序中下载mp3文件。我的一些文件超过100mb,因此我设置了transferRequest.TransferPreferences=TransferPreferences.None。但是,transferstatus方法仍然返回外部电源消息。 如果您查看代码中的第12行,您可以看到我将TransferPreferences设置为None 以下是我下载mp3文件的代码: private void download_Tap_

我使用
BackgroundTransferRequest
类在我的wp8应用程序中下载mp3文件。我的一些文件超过100mb,因此我设置了
transferRequest.TransferPreferences=TransferPreferences.None。但是,transferstatus方法仍然返回外部电源消息。
如果您查看代码中的第12行,您可以看到我将TransferPreferences设置为None

以下是我下载mp3文件的代码:

private void download_Tap_1(object sender, System.Windows.Input.GestureEventArgs e)
        {
            if (transferFileName != null)
            {
                Uri transferUri = new Uri(Uri.EscapeUriString(transferFileName), UriKind.RelativeOrAbsolute);
                BackgroundTransferRequest transferRequest = new BackgroundTransferRequest(transferUri);
                transferRequest.Method = "GET";
                string downloadFile = transferFileName.Substring(transferFileName.LastIndexOf("/") + 1);
                Uri downloadUri = new Uri("shared/transfers/" + downloadFile, UriKind.RelativeOrAbsolute);
                transferRequest.DownloadLocation = downloadUri;
                transferRequest.Tag = downloadFile;
                transferRequest.TransferPreferences = TransferPreferences.None;

                try
                {
                    BackgroundTransferService.Add(transferRequest);
                }
                catch (InvalidOperationException ex)
                {
                    // TBD - update when exceptions are finalized
                    MessageBox.Show("Unable to add background transfer request. " + ex.Message);
                }
                catch (Exception e2)
                {
                    MessageBox.Show("Unable to add background transfer request."+e2.ToString());
                }
                transferRequest.TransferStatusChanged += new EventHandler<BackgroundTransferEventArgs>(transfer_TransferStatusChanged);
                transferRequest.TransferProgressChanged += new EventHandler<BackgroundTransferEventArgs>(transfer_TransferProgressChanged);



            }
            else
                MessageBox.Show("select an mp3 file to download");


        }

        private void ProcessTransfer(BackgroundTransferRequest transfer)
        {
            switch (transfer.TransferStatus)
            {
                case TransferStatus.Completed:
                    if (transfer.StatusCode == 200 || transfer.StatusCode == 206)
                    {
                        RemoveTransferRequest(transfer.RequestId);
                        processresult.Text = "";
                        download.Visibility = Visibility.Visible;
                        lnk = new linkname();
                        URLListBox.ItemsSource = lnk.obj();

                        using (IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication())
                        {
                            string filename = transfer.Tag;
                            if (isoStore.FileExists(filename))
                            {
                                isoStore.DeleteFile(filename);
                            }
                            isoStore.MoveFile(transfer.DownloadLocation.OriginalString, filename);
                        }

                    }
                    else
                    {
                        RemoveTransferRequest(transfer.RequestId);

                        if (transfer.TransferError != null)
                        {
                            MessageBox.Show(transfer.TransferError.ToString());
                        }
                    }
                    break;

                case TransferStatus.WaitingForExternalPower:
                    WaitingForExternalPower = true;
                    processresult.Text = "Waiting For External Power";
                    break;

                case TransferStatus.WaitingForExternalPowerDueToBatterySaverMode:
                    WaitingForExternalPowerDueToBatterySaverMode = true;
                    processresult.Text = "Waiting For External Power Due To Battery Saver Mode";
                    break;

                case TransferStatus.WaitingForNonVoiceBlockingNetwork:
                    WaitingForNonVoiceBlockingNetwork = true;
                    processresult.Text = "Waiting For Non Voice Blocking Network";
                    break;

                case TransferStatus.WaitingForWiFi:
                    WaitingForWiFi = true;
                    processresult.Text = "Waiting For WiFi";
                    break;
            }
        }
 private void transfer_TransferStatusChanged(object sender, BackgroundTransferEventArgs e)
        {
            ProcessTransfer(e.Request);
        }
private void下载\u Tap\u 1(对象发送方,System.Windows.Input.GestureEventArgs e)
{
if(transferFileName!=null)
{
Uri transferUri=新Uri(Uri.EscapeUriString(transferFileName),UriKind.RelativeOrAbsolute);
BackgroundTransferRequest transferRequest=新的BackgroundTransferRequest(transferUri);
transferRequest.Method=“GET”;
string downloadFile=transferFileName.Substring(transferFileName.LastIndexOf(“/”)+1);
Uri downloadUri=新Uri(“共享/传输/”+下载文件,UriKind.RelativeOrAbsolute);
transferRequest.DownloadLocation=下载URI;
transferRequest.Tag=下载文件;
transferRequest.TransferPreferences=TransferPreferences.None;
尝试
{
BackgroundTransferService.Add(transferRequest);
}
捕获(无效操作异常ex)
{
//待定-当异常最终确定时更新
MessageBox.Show(“无法添加后台传输请求。”+ex.Message);
}
捕获(异常e2)
{
Show(“无法添加后台传输请求。”+e2.ToString());
}
transferRequest.TransferStatusChanged+=新事件处理程序(transfer\u TransferStatusChanged);
transferRequest.TransferProgressChanged+=新事件处理程序(transfer\u TransferProgressChanged);
}
其他的
Show(“选择要下载的mp3文件”);
}
私有void ProcessTransfer(BackgroundTransferRequest-transfer)
{
开关(传输。传输状态)
{
案件移交状态。已完成:
if(transfer.StatusCode==200 | | transfer.StatusCode==206)
{
RemoveTransferRequest(transfer.RequestId);
processresult.Text=“”;
download.Visibility=Visibility.Visible;
lnk=新链接名();
URLListBox.ItemsSource=lnk.obj();
使用(IsolatedStorageFile isoStore=IsolatedStorageFile.GetUserStoreForApplication())
{
字符串文件名=transfer.Tag;
if(isoStore.FileExists(filename))
{
isoStore.DeleteFile(文件名);
}
移动文件(transfer.DownloadLocation.OriginalString,文件名);
}
}
其他的
{
RemoveTransferRequest(transfer.RequestId);
if(transfer.TransferError!=null)
{
Show(transfer.TransferError.ToString());
}
}
打破
案例转移状态。WaitingForExternalPower:
WaitingForExternalPower=true;
processresult.Text=“等待外部电源”;
打破
案例转移状态。WaitingForExternalPowerDueToBatterySaverMode:
WaitingForExternalPowerDueToBatterySaverMode=true;
processresult.Text=“由于电池节电模式而等待外部电源”;
打破
案例转移状态。等待非暴力封锁网络:
WaitingForNovoiceBlockingNetwork=true;
processresult.Text=“等待非语音阻塞网络”;
打破
案例转移状态。等待WiFi:
WaitingForWiFi=true;
processresult.Text=“等待WiFi”;
打破
}
}
私有无效传输\u传输状态已更改(对象发送方、后台传输目标)
{
过程转移(如请求);
}
来自

如果要传输的文件大于100 MB,请将传输的TransferPreferences属性设置为None。如果您不这样做,系统将自动将传输设置更改为此值,这意味着只有当手机连接到外部电源并具有Wi-Fi连接时,传输才会继续