2015-01-02 2 views
1

Вот мой код (Simple Downloader):добавить дополнительный параметр для ProgressChanged события в C# 4

public void DownloadFile(string urlAddress, string location) 
    { 
     using (webClient = new WebClient()) 
     { 
      webClient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed); 
      webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 
      Uri URL = urlAddress.StartsWith("http://", StringComparison.OrdinalIgnoreCase) ? new Uri(urlAddress) : new Uri("http://" + urlAddress); 
      try 
      { 
       webClient.DownloadFileAsync(URL, location); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 
    } 

& Вот мой вопрос:

Как добавить дополнительный параметр (int RowNumber) на мой ProgressChanged мероприятие? Я имею в виду, как это:

private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e, int RowNumber) 
    { 
      // Other codes here 
    } 

& Здесь ошибка, что VS2010 дает мне:

Нет перегрузки для спичек 'ProgressChanged' делегировать 'System.Net.DownloadProgressChangedEventHandler'

я должен переопределить DownloadProgressChangedEventHandler?! как?!

Спасибо, что помогли мне.

+0

это не представляется возможным. Захватите его с помощью лямбда-выражения. –

+0

это хорошая идея. Я дам ему попробовать –

+0

Я пробовал, и я думаю, это не ответили! (ProgressChanged) выполняется несколько раз, я хочу отправить номер в него, поэтому остается неизменным после того, как я отправил другой номер. но таким образом он меняется. –

ответ

2

Вы должны изменить это:

webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged); 

с:

webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler((sender, e) => ProgressChanged(sender, e, RowNumber)); 
+0

это дает мне ("RowNumber" не существует) ошибка мой друг. можно ли это решить? –

+0

u должен сохранять private void ProgressChanged (отправитель объекта, DownloadProgressChangedEventArgs e, int RowNumber) без изменений или попробуйте добавить: int RowNumber = 0; между этими функциями –

+0

Я ничего не менял, кроме строки, которую вы написали. это дает мне ошибку. –

Смежные вопросы