2016-04-17 3 views
1

私はmega.nzでホストされているファイルをC#でダウンロードしようとしています。IProgress <T>パラメータを取る非同期メソッドからの進捗状況を取得するには?

public Task DownloadFileAsync(Uri uri, string outputFile, IProgress<double> progress) 
{ 
    return Task.Run((Action) (() => 
    { 
    if (string.IsNullOrEmpty(outputFile)) 
     throw new ArgumentNullException("outputFile"); 
    using (Stream stream = (Stream) new ProgressionStream(this.Download(uri), progress)) 
     this.SaveStream(stream, outputFile); 
    })); 
} 

私が今まで持っているもの::

私が進行を取得するにはどうすればよい
var client = new MegaApiClient(); 
     client.LoginAnonymous(); 
     IProgress<double> ze = null; 
     client.DownloadFileAsync(new Uri("https://mega.nz/#!Yo0l2YiQ!hW7Hzqrjlm3-zO31oof_dQ6Wd23YsIT5ZI8v-9Fau2s"), Directory.GetCurrentDirectory() + "\\ze.rar", ze); 

私は、しかし、私はこの機能でダウンロードの進行状況を得ることができる方法を理解することはできません、MegaApiClientを使用していますか?

答えて

0

nullの代わりにProgress<T>を作成して渡す必要があります。最終的に渡すProgress<T>は、進行状況をあなたに報告するためにasyncメソッドによって呼び出されます。

コンソールに出進捗状況を表示します1行の変更、あなたも同じ効果にProgress<T>.ProgressChangedイベントを聴くことができ

Progress<double> ze = new Progress<double>(p => Console.WriteLine($"Progress updated: {p}"); 
client.DownloadFileAsync(new Uri("https://mega.nz/#!Yo0l2YiQ!hW7Hzqrjlm3-zO31oof_dQ6Wd23YsIT5ZI8v-9Fau2s"), Directory.GetCurrentDirectory() + "\\ze.rar", ze); 

+0

私は新しい進歩をしなければならなかったが、それは働いている!どうもありがとう! –

+0

はい、ありました。それは私の答えがコンパイルされていないことを確認するために得られるものです。 :) – jdphenix

関連する問題