Двойное выполнение oinitializedAsync и утилизировать в Mudblazor при отображении изображенийC#

Место общения программистов C#
Anonymous
Двойное выполнение oinitializedAsync и утилизировать в Mudblazor при отображении изображений

Сообщение Anonymous »

Я хочу построить веб -сайт, используя Mudblazor и C#.net 9. На одной из страниц я хочу отображать изображения, которые загружаются в обработчике событий OnitializedAsync . Чтобы обратиться к случаю, когда пользователь покидает страницу, я реализовал метод Dispose .
Однако я заметил, что оба инициализированные асинк и dispose выполняются дважды.
выполнено.

dispose выполнено.

onitializedAsync выполнено.

dispected. доступ. Времена, это не подходит, потому что изображения перезагружаются слишком часто. < /p>
Я наткнулся на эту ветку. Я хотел реализовать ответы, содержащиеся там, но поток о Blazor в целом, и это с 2019 года. У меня нет _host.cshtml в проекте. (Итак, мой вопрос не дубликат).
Я затем попробовал другой ответ, используя @Rendermode @(New InteractiveSerRErrenderMode (PRERENDER: FALSE)) < /code>. Это оказывает влияние, которое второе утилизация больше не называется при рендеринге, иначе только когда вы покидаете страницу. Тем не менее, данные извлекаются дважды.

Я использую приложение на стороне сервера. Шаблон при создании проекта - это:

Изображение


}
}

}


@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

Вернуться в «C#»