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