c# - 应用启动后调用异步方法的最佳模式是什么?(构造函数中的Fire&Forget?)
问题描述
在我的应用程序中,我想在我的应用程序启动后立即通过查询数据(来自异步方法)设置我的 ViewModel。
在我的情况下,我有一个 .NET Framework WPF 应用程序,并且在启动后我想开始通过异步方法加载数据。等待数据后,我想更新我的视图模型。
做到这一点的最佳方式和最佳切入点是什么?
我的第一种方法如下:
public App()
{
// Do synchronous initializing stuff
// Load data and initialize by viewmodel with it
#pragma warning disable CS4014
ProgramStateViewModel.Instance.LoadDataAndSetupAsync();
#pragma warning restore CS4014
}
这个问题是我得到了编译器警告,我必须通过抑制它来处理它。实际上我想要一个即发即弃的调用,但我调用的方法是异步的并返回一个任务。如何做得更好?
解决方案
您可以附加异步Startup
事件处理程序:
public App()
{
Startup += async (s, e) =>
{
await ProgramStateViewModel.Instance.LoadDataAndSetupAsync();
};
}
推荐阅读
- reactjs - react-hook-form 仅重置错误消息
- c# - Discord.Net 如何在嵌入文本格式中转到下一行?
- python - sshtunnel python动态端口转发
- qt - QML 中的 UINavigationController 替换侧边菜单/抽屉
- r - 如何使用 r 中的传单在地图弹出窗口上显示词云
- opencl - 仅用于 OpenCL 的包含文件的典型后缀是什么?
- node.js - 在 Vercel 上部署 Next.js 应用程序时构造 Graphql 模式和解析器时出错
- python - Python/pygame 应用程序在退出()后没有响应
- logistic-regression - 如何在 JAGS 中实现加权逻辑回归?
- postman - Spotify — 通过 Postman 获取访问令牌(为我自己的用户)