NavigationManager.NavigateTo 不导航

问题描述 投票:0回答:1

我有一个问题,NavigationManager.NavigateTo 在某些情况下无法导航。

要重现此问题,您可以创建一个新的 Blazor Web 应用程序并添加新页面:

@page "/test"

@attribute [StreamRendering]

@inject NavigationManager NavigationManager

<h3>Component</h3>

@code {

    protected override async Task OnInitializedAsync()
    {
        await Test();
    }

    private async Task Test()
    {
        await Task.Delay(1000);
        NavigationManager.NavigateTo("/");
    }
}

在这种情况下,NavigateTo 可以工作。 但是当我将

OnInitializedAsync
更改为:

protected override async Task OnInitializedAsync()
{
    var task = Test();
    await Task.WhenAny(task);
}

然后就不行了。有人知道并可以解释为什么会这样吗?

谢谢!

编辑:我用 .NET 8 RC2 测试了它。

c# .net blazor
1个回答
0
投票

目前没有实际的解决方案,但由于 Task.WhenAny 的工作方式而有一个解决方法,并且 Microsoft 不会很快修复或更改此问题。

因此,当前的解决方法是不在 OnInitializedAsync

 中使用 
Task.WhenAny等待两次:

await await Task.WhenAny(task);

即Task.WhenAny返回一个Task。因此,预计会有双重等待。

~引用自链接问题

Tobias 在上面的评论中链接的 github 问题中提供了解决方案。我只是想在这里提供答案,这样人们就不必搜索评论链接并滚动对话。

© www.soinside.com 2019 - 2024. All rights reserved.