gpt4 book ai didi

azure - 从 Blazor 客户端中长时间运行的后台任务中释放 UI 的推荐方法是什么

转载 作者:行者123 更新时间:2023-12-04 20:27:37 25 4
gpt4 key购买 nike

我们的 Blazor(客户端)应用程序由同时存在于 UI 上的许多组件组成。其中之一必须对 Azure SQL 进行大量大数据调用。无论该组件是否具有 UI 焦点,都会执行这些调用。每个调用最多可能需要 3 秒才能返回结果,在此期间会导致 UI 无响应。在不使用 Blazor 服务器端的情况下,如何在这些调用期间保持 UI 响应。使用 Task.Run 等对单线程架构没有帮助。使用加载微调器也不是一种选择,因为这仍然会使 UI 无响应并且可能对用户不可见。在当前的 Blazor 0.9.0 中有什么方法可以实现这个目标吗?

运行最新的 Blazor 预览版 (0.9.0-preview3-19154-02)

最佳答案

您可以使用Invoke,我修改了counter示例页面来说明它,您将需要一种单例DI对象来避免运行该进程两次。

请记住 Blazor 是一个实验性项目。另外,这个答案也是一种实验方法。

@page "/counter"

<h1>Counter</h1>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" onclick="@IncrementCount">Click me</button>

@functions {
int currentCount = 0;

void IncrementCount()
{
currentCount++;
}

protected override void OnInit()
{
Invoke(
//here your task.
async () =>
{
for(var i =0; i< 50; i++)
{
await Task.Delay(1000);
currentCount++;
StateHasChanged();
System.Console.WriteLine("Still running ...");
}
});
}
}

关于azure - 从 Blazor 客户端中长时间运行的后台任务中释放 UI 的推荐方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55455428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com