ViewModel中的绑定变量没有更新显示的值



我试图在ViewModel中创建一个倒计时计时器,但我找不到任何方法来做到这一点,所以我尝试了使用任务延迟和while循环来完成这一操作,但它在第一个任务延迟后结束。你知道怎么做或者怎么修理那个吗。

public PageViewModel()
{
MethodName();
}
public async void MethodName()
{
CountSeconds = 10;
while (CountSeconds > 0)
{
await Task.Delay(1000);
CountSeconds--;
}
}

你看不到其他人的原因与上下文有关。您试图在非异步上下文中运行异步代码。要解决这个问题,你可以做几种方法,选择哪种方法是你的选择,取决于你的需求:

await MethodName();
async Task MethodName()
{
CountSeconds = 10;
while (CountSeconds > 0)
{
await Task.Delay(1000);

CountSeconds--;
}
}

另一种方法是创建各种任务并执行它们,在这里你可以看到可以帮助你的方法。

正如Rand Random所说,这不是关于MAUI,而是关于异步编程本身的理解,所以对你来说,更多地阅读它会很有用

您可以使用Dispatacher.StartTimer()(在DispatcherExtensions类中可用(创建一个函数,该函数将使用设备的时钟每x秒/分钟/小时执行一次(取决于您的设置(。

要从任何类访问应用程序的Dispatcher,请使用以下行:

var dispatcher = Application.Current.Dispatcher;

由于MAUI还没有可用的文档,您可以阅读Xamarin的Device.StartTimer((文档,它的作用完全相同。

最新更新