У меня есть библиотека с интерфейсом.Индикатор выполнения работает, но метка не обновляется
Public Interface Progress
{
int ProgressValue{get;set;},
string ProgressText{get;set;},
}
Библиотека имеет метод Create (фиктивный код):
Public Class TestLibrary
{
Progress _progress;
Public void Create()
{
foreach(var n in TestList)
{
// Do Something
_progress.ProgressValue = GetIndex(n);
_progress.ProgressText = "Updating..." + n;
}
}
}
У меня есть проект, который ссылается на эту библиотеку и вызовы Создать метод. Он даже реализует интерфейс.
Public Class TestProject : Progress
{
public int ProgressValue
{
get{return progressBar1.Value;}
set{progressBar1.Value = value;}
}
public int ProgressText
{
get{return label1.Text;}
set{label1.Text = value;}
}
}
Теперь, когда я запустить приложение, Бар Прогресс ведет себя правильно и показывает ход правильно, но текст label1 не меняется. Но он меняет конец цикла for и показывает последний элемент в цикле. Может ли кто-нибудь помочь мне в этом?
Примечание: все эти коды написаны непосредственно без тестирования, так как у меня нет приложения со мной. Извините за любые синтаксические ошибки.
Меняет ли это, когда это * завершено * из интереса? Если это так, это, вероятно, проблема с потоками - похоже, что вы слишком много работаете в своем потоке пользовательского интерфейса. –
@JonSkeet: Да, это действительно меняется. Я отредактировал вопрос, чтобы отразить то же самое. – Sandy
это, безусловно, проблема с потоками - убедитесь, что ваш «прогресс» -Код не работает в потоке пользовательского интерфейса – Carsten