Bur*_*Cat 0 c# file-io async-await windows-runtime win-universal-app
我在调用异步方法时遇到了一些麻烦.该方法在类中并加载文本文件.我想在应用程序启动时加载文本文件.但是,我无法从构造函数中调用异步方法.我在网上看过的大多数例子都经常从异步按钮事件中调用方法.
目前,我正在尝试从我的构造函数:
Task.Run(async () =>
{
this.categories = await GenerateCategories(numberOfCategories);
});
Run Code Online (Sandbox Code Playgroud)
尽管这样可行,但在调用此方法后,程序的其余部分仍会继续,并且使用"类别"执行的代码会导致崩溃(因为类别仍为空,因为任务尚未完成).
总而言之,从哪里以及如何最好地调用此方法?当用户按下按钮或任何东西时,我不希望它加载,我希望在执行任何更多代码之前填充"类别".
我正在使用C#并编写通用应用程序,因此加载文件必须是异步的.
我的博客上有一系列关于在"不可能"的情况下使用async的系列文章; 一篇文章特别涵盖了async构造函数.
因为您正在编写通用应用程序,所以要记住的重要一点是用户界面必须最初立即显示(同步); 在初始视图显示之前执行异步工作根本不是一个选项.相反,您应该(同步)初始化/构造为"加载"状态,然后在加载文件时更新 UI.
我有一系列关于MVVM应用程序异步模式的MSDN系列文章,您可能会发现这些文章很有帮助.
| 归档时间: |
|
| 查看次数: |
259 次 |
| 最近记录: |