I'm a beginner in programming, and I was wondering what the right way is to download files in UWP I now use this, but it only works like 50% of the time:
public async Task StartDownload()
{
try
{
StorageFile sf = await DownloadsFolder.CreateFileAsync(title.Text, CreationCollisionOption.GenerateUniqueName);
downloadFolder = (await sf.GetParentAsync()).ToString();
HttpClient client = new HttpClient();
byte[] buffer = await client.GetByteArrayAsync(inputURL);
using (Stream stream = await sf.OpenStreamForWriteAsync())
{
stream.Write(buffer, 0, buffer.Length);
}
path = sf.Path;
}
catch (Exception e)
{
MessageDialog dialog = new MessageDialog("Sorry, something went wrong...", "An error...");
await dialog.ShowAsync();
}
}
The exception is: "Unhandled exception at 0x750F6D7E (combase.dll in program.exe 0xC000027B; An application-internal exception has occurred (parameters: 0x16E73128, 0x00000001)."
Thanks in advance
There are two ways to do it.
First one is to use HttpClient as you do (this works well with small files)
Second one is to use BackgroundDownloader Class. That's recommended way
private async void StartDownload_Click(object sender, RoutedEventArgs e)
{
try
{
Uri source = new Uri(inputURL);
StorageFile destinationFile = await KnownFolders.PicturesLibrary.CreateFileAsync(
title.Text, CreationCollisionOption.GenerateUniqueName);
BackgroundDownloader downloader = new BackgroundDownloader();
DownloadOperation download = downloader.CreateDownload(source, destinationFile);
// Attach progress and completion handlers.
HandleDownloadAsync(download, true);
}
catch (Exception ex)
{
LogException("Download Error", ex);
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With