私は2つのコンボボックスを持つフォームを持っています。そして、combobox1.Text
とcombobox2.Text
に基づいてcombobox2.DataSource
を入力したいと考えています(ユーザーがcombobox1
に入力を完了し、入力中にcombobox2
に入力しているとします)。だから私はこのようなcombobox2
のイベントハンドラを持っている:BackgroundWorkerを正しく停止する方法
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が作業を完了せず、ユーザーがもう1つのシンボルを入力するというシナリオがあります。この場合、BackgroundWorkerがビジーであり、同時に複数のアクションを実行することができないということについては、この行で例外が発生します。
cmbDataSourceExtractor.RunWorkerAsync(filledComboboxValues);
この例外を取り除くにはどうすればよいですか?
ありがとうございます!
DoAs()でCancellationPendningを正しく処理しても、DoAs()が数秒で終了するため、CancelAsyncを次の行に進めることはできません。 – dzendras