2016-06-14 10 views
1

私はプログラミングの初心者ですが、UWPでファイルをダウンロードするのが正しい方法があるのだろうかと思っていましたが、現在は50%のようにしか動作しません。UWPを使ってファイルをダウンロードするには#

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(); 
    } 
} 

例外がある: "未処理の例外0x750F6D7E(PROGRAM.EXE 0xC000027Bでcombase.dllで、 アプリケーション内部例外が発生した(パラメータ:0x16E73128、0x00000001の)。" 予め

おかげ

+2

他の50%では何の例外がありますか? – Jcl

+0

これは動作しない時間の50%からの例外です。それが動作する時間の50%は例外ではありません。 – dynamichael

答えて

4

Thそれを行うには2つの方法があります。
まず、HttpClientを使用することです(これは小さなファイルでうまくいきます)

もう1つはBackgroundDownloader Classです。それは推奨された方法です

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); 
     } 
    } 
関連する問題