You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MAUI中for循环DisplayAlert显示异常:首次显示1而非0求助

MAUI中DisplayAlert循环弹窗顺序颠倒问题解决

问题现象

在MAUI中循环调用DisplayAlert时,弹窗显示顺序不符合预期:首次弹出的是1而非0,两次弹窗顺序颠倒。但在Windows Forms中使用逻辑一致的MessageBox.Show代码,能正常按0、1的顺序显示弹窗。

问题原因

MAUI的DisplayAlert是异步方法,在同步事件处理方法中直接调用时,不会等待弹窗关闭就会执行下一次循环迭代。循环会快速完成两次调用,而弹窗的实际显示顺序由异步任务的调度顺序决定,因此出现颠倒。

而Windows Forms的MessageBox.Show是同步方法,会阻塞当前线程直到用户关闭弹窗,所以循环会严格按顺序执行。

解决方法

将事件处理方法改为异步,在每次调用DisplayAlert时使用await关键字等待弹窗操作完成,再进入下一次循环:

private async void OnCounterClicked(object sender, EventArgs e)
{
    for (int i = 0; i < 2; i++)
        await DisplayAlert(i.ToString(), "message", "cancel");
}

说明

  • 添加async修饰符将方法声明为异步方法
  • await会暂停当前方法的执行,直到DisplayAlert对应的弹窗关闭,确保循环严格按顺序迭代,弹窗显示顺序符合预期。

内容的提问来源于stack exchange,提问作者001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 06:42:14