【问题标题】:JSRuntime.InvokeAsync("open", ...) throws TaskCanceledExceptionJSRuntime.InvokeAsync("open", ...) 抛出 TaskCanceledException
【发布时间】:2020-10-27 09:42:55
【问题描述】:

在我的 blazor 服务器端应用程序中,我调用 JSRuntime.InvokeAsync 在弹出窗口中打开静态内容:

await _jsRuntime.InvokeAsync<object>("open", "/help/help.html", "_blank");

它可以工作,但是一段时间后(可能是超时?),会抛出 TaskCanceledException。我试过调用InvokeVoidAsync,但效果是一样的。我可以通过捕获并忽略异常或删除“等待”来解决此问题,但我希望有一个更干净的解决方案,不会给我编译器警告。

【问题讨论】:

    标签: blazor-server-side


    【解决方案1】:

    尝试将cancellationToken指定为CancellationToken.None

    await _jsRuntime.InvokeAsync&lt;object&gt;("open", System.Threading.CancellationToken.None, "/help/help.html", "_blank");

    表示操作取消的取消标记。指定此参数将覆盖任何默认取消,例如由于超时 (DefaultAsyncTimeout) 被应用。

    Documenation here

    【讨论】:

      【解决方案2】:

      要解决编译器错误,请使用丢弃'_':

      _ = _jsRuntime.InvokeAsync<object>("open", "/help/help.html", "_blank");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多