Dan*_*Dan 7 c# asp.net-core blazor blazor-server-side
每当从消息队列收到消息时,我都试图获取要更新的项目列表。
这只似乎每个工作等收到虽然消息的时间。它肯定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();
}
}
Run Code Online (Sandbox Code Playgroud)
从微软的文档中,我看到了这篇文章: 组件初始化方法
它说:
预呈现其内容的 Blazor 服务器应用两次调用 OnInitializedAsync
当组件最初作为页面的一部分静态呈现时。
第二次当浏览器建立回服务器的连接时。
因此,我想如果您使用OnAfterRenderAsync并将第一个参数设置为 true 将解决您的问题
| 归档时间: |
|
| 查看次数: |
1120 次 |
| 最近记录: |