C# 在添加后台传输请求之前检查文件大小
我是个新手,我正在开发一个后台传输功能来下载文件。它适用于WindowsPhone7。但问题是超过100 MB的文件不能用“传输首选项=允许电池”下载,如果我使用“传输首选项=无”,手机必须连接电源才能传输(任何文件大小)。到目前为止,这是我尝试过的,但它无法处理超过100MB的文件。任何帮助或建议都会很好。谢谢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;
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()之后填充的。如果找到解决方案,我会继续尝试,我会将其添加到这里。谢谢