Использование больших таблиц, похоже, не работает в Blazor WASM

#itext7 #blazor-webassembly

Вопрос:

В приложении Blazor WASM (.NET 5) у меня есть компонент Razor, в котором я создаю таблицу примерно с 4 строками и следую руководству с веб-сайта iText, найденного здесь.

 var dataTable = new Table(5, true)
  .UseAllAvailableWidth()
  .SetBorder(Border.NO_BORDER);
dataTable.AddColumnHeader("Header 1");
dataTable.AddColumnHeader("Header 2");
dataTable.AddColumnHeader("Header 3");
dataTable.AddColumnHeader("Header 4");
dataTable.AddColumnHeader("Header 5");
document.Add(dataTable);
    
for (int i = 0; i < FilteredItems.Count; i  )
{
  var item = FilteredItems.ElementAt(i);
  dataTable.AddColumnData(item.Item1);
  dataTable.AddColumnData(item.Item2);
  dataTable.AddColumnData(item.Item3);
  dataTable.AddColumnData(item.Item4);
  dataTable.AddColumnData(item.Item5);

  if (i % 50 == 0)
  {
    dataTable.Flush();
  }
}

dataTable.Complete();
document.Close();
 

Я получаю следующую ошибку для того, что выглядит как каждый флеш Error: Garbage collector could not allocate 16384u bytes of memory for major heap section.

Я подозреваю, что это может быть ограничением Блейзора. Кто-нибудь еще сталкивался с этой проблемой?

Комментарии:

1. Уже пробовали использовать предварительный просмотр .net 6? Не думайте, что это сработает, но попробуйте — это ошибка моно. Почему нет подкачки для доступных данных? На каком экране вы могли бы отображать строки таблицы 4k? Нет необходимости загружать все в одну таблицу.

2. Подкачки нет, потому что мы храним все на стороне клиента в базе данных indexeddb, поэтому нет проблем с загрузкой всего в таблицу, проблема в том, что она просто распечатана. Мы сделали обходной путь, ограничив количество записей, которые можно распечатать. Мы вернемся к этому позже, чтобы попробовать .NET 6. Спасибо за информацию

Ответ №1:

  • Низкая пропускная способность для большого объема оперативной памяти
  • Отсутствие низкой задержки для небольшой оперативной памяти

следовательно:

Отключите низкую задержку.

https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/latency?redirectedfrom=MSDN

в app.config

 <configuration>
    <runtime>
        <gcServer enabled="false" />
    </runtime>
</configuration>