小编Cri*_*s M的帖子

Blazor UI 更新异步 void 与异步任务

Blazor 新手,

我正在通过 API 登录,但我注意到 UI 不会自动更新。

例如:当我第一次登录无效用户时,不会显示错误消息,但第二次尝试时会正确显示。不知怎的,有1次点击延迟。

  private async void DoLogin()
  {
        var result = await API.LoginAsync(username, password);

        if (result.ResultID == 0)
        {

        }
        else
            ErrorMessage = result.ErrorMessage;
  }
Run Code Online (Sandbox Code Playgroud)

剃须刀组件: 在此输入图像描述

当我把它改成

  private async Task DoLogin()
  {
        var result = await API.LoginAsync(username, password);

        if (result.ResultID == 0)
        {

        }
        else
            ErrorMessage = result.ErrorMessage;
  }
Run Code Online (Sandbox Code Playgroud)

它正在按预期工作。

有人可以照亮吗

  • 在方法签名中使用 async void 和 async Task 有什么区别?
  • 为什么 async void 不会立即更新 UI?

blazor blazor-client-side blazor-webassembly

4
推荐指数
1
解决办法
3407
查看次数