简体   繁体   English

向C#4中的ProgressChanged事件添加额外的参数

[英]add extra parameter to ProgressChanged event in C#4

Here is my code (Simple Downloader): 这是我的代码(简单下载器):

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

& Here is my question: &这是我的问题:

How to add extra parameter ( int RowNumber ) to my ProgressChanged event? 如何在我的ProgressChanged事件中添加额外的参数( int RowNumber )? I mean like this: 我的意思是这样的:

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

& Here is the error that VS2010 gives me: &这是VS2010给我的错误:

No overload for 'ProgressChanged' matches delegate 'System.Net.DownloadProgressChangedEventHandler' 'ProgressChanged'没有重载匹配代表'System.Net.DownloadProgressChangedEventHandler'

should I override DownloadProgressChangedEventHandler ?! 我应该重写DownloadProgressChangedEventHandler吗? how?! 怎么样?!

Thanks for helping me out. 谢谢你的协助。

You should change this: 您应该更改此:

webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);

with: 有:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM