Однако я заметил, что как onInitializedAsync , так и dispose дважды. /> Удалить выполнено.
onInitializeAsync выполнено.
dispected. /> Я уже пытался использовать _isInitialized , установленный на true , чтобы предотвратить вторую утилизацию, но распоряжение по -прежнему называется дважды. Подходит, потому что изображения перезагружаются слишком часто. < /p>
Я наткнулся на эту ветку. Я хотел реализовать ответы, содержащиеся там, но поток о Blazor в целом, и это из 2019 года. У меня нет _host.cshtml в проекте (так что мой вопрос не дублирует).@rendermode @(new InteractiveServerRenderMode(prerender:false))
< /code>
Это оказывает эффект, который второе распоряжение больше не называется при рендеринге, иначе только когда вы покидаете страницу. Тем не менее, данные извлекаются дважды. < /P>
Я использую приложение на стороне сервера. Шаблон при создании проекта - это один:
}
}
}
@code {
private List Foos = new List();
protected override async Task OnInitializedAsync()
{
Foos = await LoadImages();
Console.WriteLine("OnInitializedAsync executed.");
}
public void Dispose()
{
Console.WriteLine("Dispose executed.");
foreach (Foo foo in Foos)
{
foo.CleanUp();
}
}
private Task LoadImages()
{
List foos = new List();
Foo foo1 = new Foo(System.IO.File.ReadAllBytes(@$"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}\Pictures\20190119_131055 2.jpg"));
foos.Add(foo1);
Foo foo2 = new Foo(System.IO.File.ReadAllBytes(@$"{Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)}\Pictures\20210117_010401.jpg"));
foos.Add(foo2);
return Task.FromResult(foos);
}
}
< /code>
namespace BlazorMinimalExample2
{
public class Foo
{
public byte[]? ImageAsByteArray { get; set; }
public Foo(byte[] stuff)
{
this.ImageAsByteArray = stuff;
}
public void CleanUp()
{
if (this.ImageAsByteArray != null)
{
this.ImageAsByteArray = null;
}
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... displaying