gpt4 book ai didi

c# - 自动完成文本框在执行查询时卡住。一定有更好的办法!

转载 作者:太空狗 更新时间:2023-10-29 23:03:37 25 4
gpt4 key购买 nike

各位!我已尽我所能进行搜索,但没有找到我正在寻找的帮助。

问题

AutoCompleteTextbox 在执行查询时卡住并“吃掉”字符

请求

模仿 Google Instant 功能

背景

首先要做的事情:C#、WPF、.NET 4.0

好吧,现在这已经结束了,我正试图找到实现动态自动完成文本框的最佳方法,它在输入每个字母后查询数据库以获取结果。

当触发 AutoCompleteTextBox 的 TextChanged 事件时,将执行以下代码:

    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 毫秒 - 在此期间,文本框被卡住并且它“吃掉”任何按下的键。这是我一直遇到的一个烦人的问题。由于某种原因,SearchUnderlyings(e.SearchText) 中的 LINQ 在 GUI 线程中运行。我尝试将其委​​托给后台线程,但结果仍然相同。

理想情况下,我希望文本框按照 Google Instant 的方式工作 - 但我不想在服务器/查询返回结果之前“杀死”线程。

任何人都有经验或可以提供一些指导,让我可以在输入时进行查询,而不会卡住 GUI 或杀死服务器?

谢谢大家!

最佳答案

这一行:

var result = SearchUnderlyings(e.SearchText);

同步运行,锁定 UI 线程。解决这个问题的方法是切换到异步模式,在这种模式下您开始查询,然后在查询完成时执行某些操作。

这篇文章很好地演示了它,并展示了一些解决方案 - http://www.codeproject.com/KB/cs/AsyncMethodInvocation.aspx

关于c# - 自动完成文本框在执行查询时卡住。一定有更好的办法!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com