У меня есть форма с двумя комбобоксами. И я хочу заполнить 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 занят и не может выполнить несколько действий в одно и то же время.
Как избавиться от этого исключения?
Спасибо заранее!