J'ai un formulaire avec 2 zones de liste modifiables sur elle. Et je veux remplir combobox2.DataSource
basé sur combobox1.Text
et combobox2.Text
(je suppose que l'utilisateur a terminé l'entrée en combobox1
et est dans le milieu de la saisie en combobox2
). J'ai donc un gestionnaire d'événements pour l' combobox2
comme ceci:
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 );
}
Aussi loin que la construction de la source de données est le processus qui prend du temps (il crée une requête de base de données et l'exécute), j'ai décidé qu'il est préférable de l'effectuer dans un autre processus à l'aide de BackgroundWorker. Donc, il y a un scénario lorsque cmbDataSourceExtractor n'a pas terminé son travail et que l'utilisateur tape un symbole de plus. Dans ce cas, j'obtiens une exception sur cette lignecmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );
sur que BackgroundWorker est occupé et ne peut pas effectuer plusieurs actions en même temps.
Comment se débarrasser de cette exception?
Merci à l'avance!