все! Я искал все, что мог, и не нашел именно той помощи, которую искал.
AutoCompleteTextbox ЗАМЕРЗАЕТ и «съедает» символы во время выполнения запроса
Подражает функциям Google Instant
Перво-наперво: C #, WPF, .NET 4.0
Хорошо, теперь это не так, я пытаюсь найти лучший способ реализовать динамическое текстовое поле автозаполнения, которое запрашивает результаты в базе данных после каждой набранной буквы.
Следующий код запускается при срабатывании события TextChanged AutoCompleteTextBox:
public void Execute(object sender, object parameter)
{
//removed some unnecessary code for the sake of being concise
var autoCompleteBox = sender as AutoCompleteTextBox;
var e = parameter as SearchTextEventArgs;
var result = SearchUnderlyings(e.SearchText);
autoCompleteBox.ItemsSource = result;
}
Теперь предположим, что SearchUnderlyings (e.SearchText)
занимает в среднем 600–1100 мсек - в течение этого времени текстовое поле замораживается и "съедает" любые нажатые клавиши. У меня возникла досадная проблема. По какой-то причине LINQ в SearchUnderlyings (e.SearchText)
работает в потоке графического интерфейса пользователя. Я пробовал делегировать это фоновому потоку, но результат тот же.
В идеале, я бы хотел, чтобы текстовое поле работало так же, как Google Instant, но я не хочу "убивать" потоки до того, как сервер / запрос сможет вернуть результат.
Кто-нибудь имеет опыт или может предложить некоторые рекомендации, которые позволят мне делать запросы по мере ввода, не останавливая графический интерфейс и не убивая сервер?
Спасибо, ребята!