私はオートコンプリートコントロールを実装しています。ユーザーが入力に新しい文字を入力するたびに、クエリが実行されます。テストするために、私は、平均クエリが実行するのに約5秒かかる大規模なデータベースを作成しました。ado.netクエリを中止する
問合せは、私は新しいスレッドでクエリを実行実行する5秒かかりますので:
// execute the following lamda expression when user enters characters to textbox
textBox1.TextChanged +=(x,eventArgs)=>{
// execute query on separate thread
new Thread(new ThreadStart(() =>
{
ObservableCollection = MyEntities.Entities.Products.Where(p => p.Name.Contains(inputText));
})).Start();
};
のObservableCollectionとのinputTextが私のテキストボックスとリストにバインドさプロパティです。
問題は、ユーザーが2文字を入力すると、プログラムは同時に2つのスレッドを実行することになります。クエリを中止するにはどうすればよいですか?私が考えてい
もの:
ブール変数IsQueryRuningを作成し、スレッドが終了したときに真quenクエリが開始に等しいとfalseに等しく、それを設定します。新しいクエリが実行され、IsQueryRuning = trueの場合、ObservableCollection = nullを設定して例外を発生させることができます。私はtry catchブロックでそれを再開します。私が持っていた