我有一个带有2个组合框的表单。我想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很忙,无法同时执行多个操作。
如何摆脱这种例外?
提前致谢!