gpt4 book ai didi

c# - MVVM灯下的异步命令执行

转载 作者:行者123 更新时间:2023-12-04 15:43:42 25 4
gpt4 key购买 nike

我想知道为什么 MVVM light 缺少异步执行的命令?我相信在很多情况下这可能会有用,所以让我举一个例子。
假设我们的 UI 包含一个包含多个屏幕的容器。用户可以关闭特定屏幕或具有多个屏幕的容器。假设用户已在容器上发出关闭命令。容器反过来在每个屏幕上调用关闭命令,它需要等待屏幕关闭。这在实践中可能意味着验证数据。保存等。出于这个原因,我们需要发出一个异步调用来防止 UI 变得无响应,并且我们还需要等待任务完成才能继续。
所以,如果我们在 Command 中有这样的东西

public RelayCommand CloseCommand
{
get { return _closeCommand ?? _closeCommand = new RelayCommand( async () =>
{
foreach (var screen in Screens)
{
if (!await screen.CloseCommand.ExecuteAsync(null))
{
// do something
}
}
}) }

}
我们也可以在屏幕上公开其他方法,但在我看来它应该是 RelayCommand 的任务,因为它已经存在于那里。
或者有不同的方法来处理这种情况?

最佳答案

可能是因为有很多不同的方法可以做到;我在 my MSDN article on the subject 中描述了一些方法.

异步生命周期命令特别棘手。必须仔细考虑诸如“关闭”命令之类的东西。是否有迹象表明正在关闭?如果用户多次关闭会发生什么情况(特别是“关闭”通常可以由操作系统或其他应用程序启动,即使“关闭按钮”被禁用)?

关于c# - MVVM灯下的异步命令执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27699237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com