gpt4 book ai didi

c# - 从另一个线程更新 Blazor 中的项目列表

转载 作者:行者123 更新时间:2023-12-03 14:07:50 26 4
gpt4 key购买 nike

每当从消息队列收到消息时,我都试图获取要更新的项目列表。

这似乎只在每隔一次收到消息时才起作用。它肯定会在 SubscribeAsync 中使用匿名方法每次都打电话,我不知道为什么每次都不更新。我假设它与位于不同线程中的匿名方法有关。任何想法我做错了什么?

@page "/"
@inject IMessageQueueHelperFactory MessageQueueHelperFactory
@inject ILogger<Index> Logger
@using Microsoft.Extensions.Logging
@using Newtonsoft.Json

<ul class="list-group">
@foreach (var user in Users) {
<li class="list-group-item">@user</li>
}
</ul>

@code
{
private List<string> Users { get; set; } = new List<string>();

protected override void OnInitialized()
{
MessageQueueHelperFactory.Create(Queues.UserRegistration)
.SubscribeAsync(async x =>
{
var user = JsonConvert.DeserializeObject<UserRegistrationData>(x);
Users.Add(user.Username);
await InvokeAsync(StateHasChanged);
});

base.OnInitialized();
}
}

最佳答案

从微软的文档中,我看到了这篇文章:
Component initialization methods

它说:

Blazor Server apps that prerender their content call OnInitializedAsync twice

  • Once when the component is initially rendered statically as part of the page.

  • A second time when the browser establishes a connection back to the server.



所以,我想如果你使用 OnAfterRenderAsync将第一个参数设置为 true 将解决您的问题

关于c# - 从另一个线程更新 Blazor 中的项目列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60591248/

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