2016-04-24 13 views
2

uploadFile中に進行状況バーを表示しようとしています。バックエンドの割合は、以下の方法で取得できますが、e.PercentageProgressによって返された割合を印刷してユーザーに表示することはできません。SharpBoxユーザーのプログレスバー

static void UploadDownloadProgress(Object sender, FileDataTransferEventArgs e) 
    { 
     // Need to show this on a label or return to front end somehow 
     System.Diagnostics.Debug.WriteLine(e.PercentageProgress);    

     e.Cancel = false; 
    } 

私はe.PercentageProgressはaspxページに表示するか、JavaScriptで使用するために取得するために取得することができますどのように質問はありますか?

+0

これは実現しにくいようです。私は自分のソリューションを修正して、まずサーバー上でファイルをアップロードしなければならなかった(どこに進捗バーを簡単に表示できるのか)、その後Dropboxにアップロードしなければならなかった。これはバックグラウンドで実行されるだけなので、ユーザーはその情報を知らせる必要はなく、ユーザーがサイトに滞在しているかどうかにかかわらずリクエストを完了します(Webメソッド)。もう1つの利点は、アップロード時間の大幅な短縮でした。 –

答えて

0

このような何か試してください:あなたはどこか別の場所からアクセスすることができます値を持つ静的変数を設定しているので、

public class ProgressInformer { 

    public static string Progress = "0"; 

    static void UploadDownloadProgress(Object sender, FileDataTransferEventArgs e) 
    { 

     // print a dot   
     System.Diagnostics.Debug.WriteLine(e.PercentageProgress); 

     // Need to show this on a label or return to front end somehow 
     ProgressInformer.Progress = e.PercentageProgress.ToString(); 

     e.Cancel = false; 
    } 
} 

を。次に、その値を使用して、何らかの方法またはサービスを使用してフロントエンドにエコーすることができます。おそらくこのような:

public string EchoToFrontEnd() 
{ 
    return ProgressInformer.Progress; 
} 

制限:これはあなたのために働く場合は、まだこのソリューションはスレッドセーフではありません。つまり、複数のダウンロードの進行状況をエコーすることはできません。一度に1つのダウンロードで作業する必要があります。

希望すると...!

+0

SharpBoxはメソッドを自動的に数回起動します。進捗状況を設定しても、UploadDownloadProgressメソッドが起動されたときにデータを正確に取得する必要があります。私は今のような何かをしようとしており、値は変わらない:perc.Text = docUpload.Progress.ToString(); –

+0

実際には、UploadDownloadProgressメソッド内でフロントエンドにパーセンテージを取得することを管理する必要があるようです –