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

如何以模态方式打开MudBlazor对话框?为何代码未等对话框关闭就执行?

MudBlazor对话框未等待关闭就执行后续代码的原因及解决办法

问题原因

你当前的代码逻辑有误:Dialog.ShowAsync()方法的作用是异步创建并显示对话框,它会在对话框弹出后立刻返回一个IDialogReference对象,并不会等待用户关闭对话框。所以代码会直接跳到Console.Beep()执行,导致对话框还开着就发出蜂鸣音。

解决办法

要等待对话框关闭后再执行后续代码,需要等待IDialogReference的Result任务完成——这个任务会在对话框关闭时触发。修正后的代码如下:

private async Task ChangeAvatar()
{
    var dialogRef = await Dialog.ShowAsync<DlgAvatarSelection>("Select avatar",
        new DialogOptions { CloseButton = true, CloseOnEscapeKey = true });
    // 等待对话框关闭
    var result = await dialogRef.Result;
    Console.Beep(1000, 25);
}

如果需要判断用户是确认还是取消关闭对话框,可以进一步处理result对象:

if (!result.Cancelled)
{
    // 用户确认关闭,执行后续逻辑
    Console.Beep(1000, 25);
}

内容的提问来源于stack exchange,提问作者Anders Lindén

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:19:51