在 WPF/MVVM 中调用启动任务的最佳方式
Best way to call startup tasks in WPF/MVVM
我在 WPF/MVVM 应用程序启动时处理一些任务。我有什么理由不能从我的 app.xaml.cs class 调用这些任务?不确定这是否违背 MVVM,或者这是否是处理启动任务的最佳实践方式。
我将调用的任务类型示例:
- 正在检查数据库,如果不存在则创建它
- 正在检查启动时需要的应用程序设置,如果找不到则使用默认数据创建它们
- 等等...
我已经尝试了几种方法并且每一种都有效,但我很好奇人们遵循的标准是什么。我已经尝试了以下内容。
- 从我的 MainViewModel 调用它们
- 从 app.xaml.cs
呼叫他们
- 将它们创建为服务并将它们注入到我的 MainViewModel
我建议您不要在应用程序中包含您的启动任务,在 WPF/MVVM 中创建单独的应用程序,并为您的启动任务创建一个单独的 windows 服务,并在您的应用程序中访问该服务。
- 这种分离使您的代码更清晰且易于维护。
- 如果启动任务失败,您可以在应用程序上显示消息。启动服务。
- 您可以start/stop独立服务。
- 如果启动任务需要更多时间才能启动,这只会执行一次。最终用户不会处理这个时间,他只会看到您的应用程序 UP 时间。
我在 WPF/MVVM 应用程序启动时处理一些任务。我有什么理由不能从我的 app.xaml.cs class 调用这些任务?不确定这是否违背 MVVM,或者这是否是处理启动任务的最佳实践方式。
我将调用的任务类型示例:
- 正在检查数据库,如果不存在则创建它
- 正在检查启动时需要的应用程序设置,如果找不到则使用默认数据创建它们
- 等等...
我已经尝试了几种方法并且每一种都有效,但我很好奇人们遵循的标准是什么。我已经尝试了以下内容。
- 从我的 MainViewModel 调用它们
- 从 app.xaml.cs 呼叫他们
- 将它们创建为服务并将它们注入到我的 MainViewModel
我建议您不要在应用程序中包含您的启动任务,在 WPF/MVVM 中创建单独的应用程序,并为您的启动任务创建一个单独的 windows 服务,并在您的应用程序中访问该服务。
- 这种分离使您的代码更清晰且易于维护。
- 如果启动任务失败,您可以在应用程序上显示消息。启动服务。
- 您可以start/stop独立服务。
- 如果启动任务需要更多时间才能启动,这只会执行一次。最终用户不会处理这个时间,他只会看到您的应用程序 UP 时间。