나는 자동 완성 컨트롤을 구현 중입니다. 사용자가 입력에 새 문자를 입력 할 때마다 쿼리가 실행됩니다. 테스트를 위해 평균 쿼리를 실행하는 데 약 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]를 내 텍스트 상자와 목록에 바인더 제본 속성입니다.
사용자가 두 개의 문자를 입력하면 내 프로그램이 동시에 두 개의 스레드를 실행하게됩니다. 어떻게 쿼리를 중단 할 수 있습니까? 내가 생각하고
것들 :
이 부울 변수 IsQueryRuning를 생성하고 설정이 사실 quen 쿼리 시작 같고 스레드가 종료 될 때 거짓과 동일. 새 쿼리가 실행되고 IsQueryRuning = true이면 ObservableCollection = null을 설정하고 예외를 발생시킬 수 있습니다. 그런 다음 try catch 블록을 사용하여이 파일을 삭제합니다.
이 속성 컬렉션을 설정 = 널 가끔 내가해야했다 예외와 그렇지 않은 다른 시간 ...