У меня есть форма с двумя комбобоксами. И я хочу заполнить combobox2.DataSource
на основе combobox1.Text
и combobox2.Text
(я предполагаю, что пользователь выполнил ввод в combobox1
и находится в середине ввода в combobox2
). Поэтому для combobox2
у меня есть обработчик событий:
private void combobox2_TextChanged(object sender, EventArgs e)
{
if (cmbDataSourceExtractor.IsBusy)
cmbDataSourceExtractor.CancelAsync();
var filledComboboxValues = new FilledComboboxValues{ V1 = combobox1.Text,
V2 = combobox2.Text};
cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );
}
Что касается построения DataSource, это трудоемкий процесс (он создает запрос к базе данных и выполняет его), я решил, что лучше выполнить его в другом процессе с использованием BackgroundWorker. Таким образом, существует сценарий, когда cmbDataSourceExtractor не завершил свою работу, и пользователь набирает еще один символ. В этом случае я получаю исключение в этой строке cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );
о том, что BackgroundWorker занят и не может выполнить несколько действий в одно и то же время.
Как избавиться от этого исключения?
Спасибо заранее!