【发布时间】:2016-10-06 13:53:27
【问题描述】:
我正在用 C# 制作一个使用 AutoSuggestBox 的应用程序。我在该应用程序中有一个 json 文件,我已将其反序列化为 List 对象。该json文件如下所示。
{"_id":690856,"name":"Tyuzler","country":"UA","coord":{"lon":34.083332,"lat":44.466667}}
{"_id":464737,"name":"Zaponor’ye","country":"RU","coord":{"lon":38.861942,"lat":55.639999}}
{"_id":707716,"name":"Il’ichëvka","country":"UA","coord":{"lon":34.383331,"lat":44.666668}}
它有大约 2,00,000 个这样的行。
这是我面临性能问题的地方。因为它有 2,00,000 行,所以我的 List 对象有 2,00,000 个成员。
当我在 AutoSuggestBox 中键入一个字母时,需要 15-20 秒才能提出建议。在我输入下一个字母后,它会重复相同的内容。那么,如何让它快速响应呢?
【问题讨论】:
-
您使用的是什么 UI 平台,WinForms、WPF 还是 UWP?你也是只加载一次json文件吗?
-
我正在使用 UWP。我已将 json 文件复制到项目中。在触发 TextChanged 事件后,我正在反序列化 json 并将其解析为 List
对象。 -
这就是导致您的性能问题的原因。加载和解析 json 需要时间。如果您不希望它经常更改,您应该只在应用程序启动时加载和解析文件。您还应该利用
Task的多线程,这样您就不会锁定 UI。 -
所以,无论我使用哪种方法来解析 json 文件,我都应该将其绑定到应用程序启动。不会让应用启动时间变长吗?
-
如果你把它扔到一个单独的/后台线程上就不行了。
标签: c# json performance autosuggest