C# 在添加后台传输请求之前检查文件大小

C# 在添加后台传输请求之前检查文件大小,c#,silverlight,windows-phone-7,networking,download,C#,Silverlight,Windows Phone 7,Networking,Download,我是个新手,我正在开发一个后台传输功能来下载文件。它适用于WindowsPhone7。但问题是超过100 MB的文件不能用“传输首选项=允许电池”下载,如果我使用“传输首选项=无”,手机必须连接电源才能传输(任何文件大小)。到目前为止,这是我尝试过的,但它无法处理超过100MB的文件。任何帮助或建议都会很好。谢谢 private void downloadTrigger() { string transferFileName = urlTextBox.Text;

我是个新手,我正在开发一个后台传输功能来下载文件。它适用于WindowsPhone7。但问题是超过100 MB的文件不能用“传输首选项=允许电池”下载,如果我使用“传输首选项=无”,手机必须连接电源才能传输(任何文件大小)。到目前为止,这是我尝试过的,但它无法处理超过100MB的文件。任何帮助或建议都会很好。谢谢

    private void downloadTrigger()
    {
        string transferFileName = urlTextBox.Text;
        var transferUri = new Uri(Uri.EscapeUriString(transferFileName), UriKind.Absolute);

        BackgroundTransferRequest transferRequest = new BackgroundTransferRequest(transferUri);
        transferRequest.Method = "GET";

        string downloadFile = transferFileName.Substring(transferFileName.LastIndexOf("/") + 1);
        Uri downloadUri = new Uri("shared/transfers/" + downloadFile, UriKind.Relative);
        transferRequest.DownloadLocation = downloadUri;
        transferRequest.Tag = downloadFile;

        if (transferRequest.TotalBytesToReceive >= 104857600)
        {
            try
            {
                transferRequest.TransferPreferences = TransferPreferences.None;
                MessageBox.Show("For files over 100MB an external power is required to start copy.", "News box", MessageBoxButton.OK);
                BackgroundTransferService.Add(transferRequest);
                feedbackTextBlock.Text = "Queueing " + downloadFile;
                return;
            }
            catch
            {
            }
        }

        try
        {
            transferRequest.TransferPreferences = TransferPreferences.AllowBattery;
            BackgroundTransferService.Add(transferRequest);
            feedbackTextBlock.Text = "Copying " + downloadFile;
        }
        catch
        {
        }
    }

如果你试图下载那些大文件,会发生什么?有例外吗?代码是否进入捕获?在catch块中的第一个大括号处设置一个断点,因为在您的代码中,您正在执行类似于VB“ON ERROR RESUME NEXT”的操作!它只获取文件名并存储它,但不下载实际的文件。没有错误或异常。请尝试挂接BackgroundTransferRequest(TransferProgressChanged和TransferStatusChanged)的事件。代码是否进入此事件?我正在使用MS SDK后台传输。因此,一个页面通过上面的代码将文件添加到后台,另一个页面处理TransferProgressChanged和TransferStatusChanged。问题是,TotalByTestorReceive值是在BackgroundTransferService.Add()之后填充的。如果找到解决方案,我会继续尝试,我会将其添加到这里。谢谢。如果你试图下载那些大文件,会发生什么?有例外吗?代码是否进入捕获?在catch块中的第一个大括号处设置一个断点,因为在您的代码中,您正在执行类似于VB“ON ERROR RESUME NEXT”的操作!它只获取文件名并存储它,但不下载实际的文件。没有错误或异常。请尝试挂接BackgroundTransferRequest(TransferProgressChanged和TransferStatusChanged)的事件。代码是否进入此事件?我正在使用MS SDK后台传输。因此,一个页面通过上面的代码将文件添加到后台,另一个页面处理TransferProgressChanged和TransferStatusChanged。问题是,TotalByTestorReceive值是在BackgroundTransferService.Add()之后填充的。如果找到解决方案,我会继续尝试,我会将其添加到这里。谢谢