2016-04-24 78 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。這隻會在後臺運行,因此用戶不需要被通知它,並會完成請求,無論用戶停留或離開網站(網絡方法)。另一個優點是上傳時間大幅減少。 –

回答

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

限制:如果這對你的作品還是這個解決方案不是線程安全的。這意味着,您無法迴應多次下載的進度。您一次只能使用一次下載。

希望這有助於...!

+0

事情是SharpBox自動幾次啓動方法。即使我設置了Progress,我也需要在UploadDownloadProgress方法被觸發時準確獲取數據。我正在嘗試這樣的事情,並且值永遠不會改變:perc.Text = docUpload.Progress.ToString(); –

+0

因此,實際上我似乎需要管理在方法內獲取百分比到UploadDownloadProgress –