cs0123 - нет перегрузки для 'ProgressChanged' соответствует делегату 'EventHandler' <int> в ядре .net

Мне не удается зарегистрировать событие изменения прогресса. с указанным выше сообщением об ошибке из заголовка вопроса.

Код:

      public class AudioFileSearcher
{
    public AudioFileSearcher(string searchPath, bool includeSubFolders, Views.SoundListView.SoundList parentView)
    {
        this.progress1 = new Progress<int>();
        progress1.ProgressChanged += backgroundWorker1_ProgressChanged; //<- Error Here!
    }
    // void backgroundWorker1_ProgressChanged(object sender, EventArgs e) // also not working
    void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        // Do something
    }
    public async Task FindAudioFiles(IProgress<int> progress)
    {
        foreach (string item in longItemList)
        {
            // do long operation
            if (progress != null)
            progress.Report(0);
        }
    }
}

В каждом отдельном примере и вопросе о переполнении стека, который я проверял, говорится, что проблема заключается в

      void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)

что было бы правильно

      void backgroundWorker1_ProgressChanged(object sender, EventArgs e) // also not working

другие вопросы, которые я проверял о IProgress, к сожалению, все содержат неполные или псевдопримеры, которые мне не подходят.

1 ответ

Все примеры, которые я нашел, были ошибочными. а не это:

      public class AudioFileSearcher
{
    public AudioFileSearcher(string searchPath, bool includeSubFolders, Views.SoundListView.SoundList parentView)
    {
        this.progress1 = new Progress<int>();
        progress1.ProgressChanged += backgroundWorker1_ProgressChanged; //<- Error Here!
        Task.Run(async () => await FindAudioFiles(progress1));
    }
    void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        // Do something
    }
}

попробуй это:

      public class AudioFileSearcher
{
    public AudioFileSearcher(string searchPath, bool includeSubFolders, Views.SoundListView.SoundList parentView)
    {
        this.progress1 = new Progress<int>(
        {
            backgroundWorker1_ProgressChanged();
        });
        Task.Run(async () => await FindAudioFiles(progress1));
    }
    void backgroundWorker1_ProgressChanged()
    {
        // Do something
    }
}

Другие вопросы по тегам