2016-04-24 4 views
2

Я пытаюсь показать пользователю индикатор выполнения во время uploadFile. Я могу получить процент в конце с помощью метода ниже, однако мне не удастся распечатать процент, возвращаемый e.PercentageProgress, для отображения пользователю.SharpBox Progress Bar для пользователя

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 –