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

Maui Blazor异步任务后更新绑定值的问题及解决方法

在MAUI Blazor中异步任务后更新绑定值的正确方法

这不是Bug,是Blazor的UI更新机制导致的。当你同步设置outputVal为“Value during loading”后立刻执行await Task.Delay(100),UI线程还没来得及完成渲染,await后的代码就把值改成了“Final value”,所以中间状态根本没机会显示在页面上。

解决方法很简单,手动通知Blazor更新UI就行,同时建议把async void换成async Task(符合Blazor的最佳实践,避免潜在的异常处理问题):

修改后的示例1代码:

@page "/example1"

<p>Output: @outputVal</p>
<button @onclick="@ChangeOutputVal" style="width:1200px">Confirm</button>

@code {
    private string outputVal = "Placeholder value";

    private async Task ChangeOutputVal() {
        outputVal = "Value during loading";
        StateHasChanged(); // 强制Blazor立即渲染组件,显示中间状态
        await Task.Delay(100);
        outputVal = "Final value";
        // await结束后Blazor会自动检测状态变化并更新UI,无需额外调用
    }
}

至于示例2能正常显示,是因为await之后设置值时,Blazor会在异步操作完成后自动触发UI更新,所以最终值能正确渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:52:20