我正在使用Windows 8应用。在ViewModel中,我有一个名为Initialize的函数,它加载UI元素,如Comboboxes和GridViews。在开发过程中,我使用的是硬编码值。
public void Initialize()
{
LoadLocations();
List<string> filterNames = new List<string> { "Test", "Test1" };
LoadMyFilters(filterNames);
LoadPeople();
}
我更改了代码,以便从本地文件系统加载filterNames,如图所示。我已经介绍了async / await模式。
public async void Initialize()
{
LoadLocations();
List<string> filterNames = await FileManager.Instance.GetMyFiltersNamesAsync();
LoadMyFilters(filterNames);
LoadPeople();
}
这是我感到困惑的地方。一旦我介绍了asnyc等待,UI就不会加载过滤器和人员。过滤器和人物是绑定到UI的可观察集合。我确实验证了代码是否正在执行。 GetMyFiltersNamesAsync只使用内置的.NET调用来连接本地存储。
我检查了线程并注意到代码正在一个Worker线程上运行,而且情况总是如此。但我继续使用调度程序来运行它只是为了确保问题不是因为UI线程没有运行代码。它仍然没有加载。
导致此问题的原因是什么?如何解决此问题。我感谢您的帮助。