如何使用SQlite从Autosuggestbox检索数据?

时间:2017-02-25 11:26:52

标签: sqlite uwp windows-phone autosuggest

我创建了一个SQLite数据库,但问题是当它键入它阻止而且我没有得到任何数据并且离开应用程序。这是我第一次使用数据库。我粘贴了一个代码片段。

<ul  class="nav__right" id="menu">
  <li>
    <h3><a href="#home">home</a></h3>
  </li>
  <li>
    <h3><a href="#about">À propos</a></h3>
  </li>
  <li>
    <h3><a href="#production">Réalisations</a></h3>
  </li>
  <li>
    <h3><a href="#contact">Contact</a></h3>
  </li>
</ul>

2 个答案:

答案 0 :(得分:0)

想到两个解决方案

  1. 使用SQLite的Async版本,它应该有助于阻止
  2. 甚至更好,在显示页面时将您搜索的所有机场加载到内存中的列表,并在此列表中搜索它们,而不是直接调用SQLite

答案 1 :(得分:0)

如果您正在使用synchronus SQLite apis,则可以在Task.Run中包装Query方法。在Run中包装逻辑将使您的代码在后台线程中运行。 由于TextChanged处理程序在UI线程中运行任何长时间运行的操作,您将阻止UI线程并最终冻结应用程序。

正如Igor建议的那样,您可以使用SQLite的异步API。这些API将在后台线程中运行。您应该考虑的唯一事情就是不直接更新您的ItemsSource。在后台线程中执行的任何操作更新UI线程都将导致异常。

如果您的机场&#39; table没有大尺寸的数据你应该将它们提取到内存并保存在那里,当你想查询它时,而不是每次你从内存中获取它们时都去SQLite

直接设置ItemsSource不会更新视图。你应该真正查找ObservableCollection。如果您想在获取数据时更新视图,必须先将ItemsSource设置为null,然后再将其设置为数据。