最佳答案
我有一张表格,上面有两个盒子。并且我想根据 combobox1.Text
和 combobox2.Text
填充 combobox2.DataSource
(我假设用户已经在 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 是一个耗时的过程(它创建一个对数据库的请求并执行它) ,我认为最好使用 BackoundWorker 在另一个过程中执行它。因此,有一种情况是,cmbDataSource萃取器尚未完成其工作,而用户又键入了一个符号。在这个例子中,我在这一行得到了一个异常
cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues );
关于 Background Worker 正忙,不能在同一时间执行多个操作。
如何消除这个异常?
先谢谢你!