Прямо сейчас у меня есть приложение Windows (C#), которое выплевывает длинные отчеты. Каждый отчет захватывает некоторую информацию из пользовательского интерфейса, чтобы ограничить отчеты. Конечно, создание отчета происходит в фоновом потоке, и мне нужно правильно вызвать различные элементы управления, чтобы получить такие вещи, как выбранные индексы и значения. Но я не думаю, что мой код выглядит хорошо и надеялся, что будет лучшая модель. Потому что есть очень много запросов к элементам управления, я сделал общие делегат для каждого типа, которые будут возвращены:Чисто вызывать шаблоны?
private delegate string StringDelegate();
private delegate int IntDelegate();
Далее вниз, существует различные конкретизации этих делегатов:
private StringDelegate GetYearSelectedItem = new StringDelegate(cmbYearAsync);
YearAsync выглядит следующим образом :
private string cmbYearAsync() {
return cmbYear.SelectedItem.ToString();
}
И, наконец, в коде, который на фоне потока, это то, как я получаю значения:
cmbYear.Invoke(GetCmbYearSelectedItem);
Есть ли более чистый способ получить эти значения из отдельного потока?