Скрытие progressBar при асинхронной загрузке MVP

223
20 апреля 2017, 13:56

Здравствуйте, пытаюсь реализовать паттерн MVP на примере приложения Windows Form. Возникла проблема с асинхронной загрузки данных при загрузке формы. На форме есть progressBar который показывает пользователям о том что данные еще грузятся. Метод Load вызывает события которые передают управление презентеру:

cbSitizenshipLoad?.Invoke(comboBoxSitizenship, EventArgs.Empty);
cbTypeDocLoad?.Invoke(comboBoxTypeDoc, EventArgs.Empty);
comboBoxSitizenship.SelectedValue = 1;
cbRegLoad?.Invoke(comboBoxReg, EventArgs.Empty);
cbPlaceGitelLoad?.Invoke(comboBoxPlaceGitel, EventArgs.Empty);
cbDopTestLoad?.Invoke(comboBoxDopTest, EventArgs.Empty);

В презентере все обработчики событий похожи, вот код одного из них:

private async void cbTypeDocLoad(object sender, EventArgs e)
{
    object data = await Task.Factory.StartNew(() => { return model.getTypeDoc(); });
    view.setDataComboBox(sender, data, "name_doc", "type_doc");
}

Первая строка вызывает асинхронную загрузку данных из модели, вторая строка передает объект привязки, данные для привязки, DisplayMember и ValueMember в метод представления для привязки. Метод setDataComboBox:

public void setDataComboBox(object sender, object dataSource, 
       string displayMember, string valueMember, int selectedValue)
{
    ((ComboBox)sender).ValueMember = valueMember;
    ((ComboBox)sender).DisplayMember = displayMember;
    ((ComboBox)sender).DataSource = dataSource;
    ((ComboBox)sender).SelectedValue = selectedValue;
}

А теперь собственно вопрос=) Как сделать так что бы progressBar скрывался после окончания выполнения всех асинхронных методов? Если его скрывать в конце метода Load то он скрывается сразу не дожидаясь загрузки информации? может есть какое нибудь событие которое генерируется после выполнения асинхронного метода??

P.S. С MVP работаю первый раз, так что не судите строго =)

READ ALSO
Чтение VM-свойства за пределами VM

Чтение VM-свойства за пределами VM

Имеется класс Action, который представляет собой некое действиеЭто действие также может содержать коллекцию вложенных действий ChildAction

264
C# xml в цикле for

C# xml в цикле for

Помогите разобраться с циклом и xmlЭто мой первый вопрос, я школьник, пытаюсь написать программу по созданию теста для одноклассников

213
Форматирование кода в VS Code (C#)

Форматирование кода в VS Code (C#)

Как настроить форматирование кода в VS Code под C# привык к нормальному компактному синтаксису в стиле Java, те

458