Nano Hash - криптовалюты, майнинг, программирование

(C#) ReportViewer в службе Windows

у нас есть проект WPF, создающий несколько отчетов (точно 22) с использованием ReportViewer (2010), все эти отчеты с более чем 100 страницами и действительно сложным макетом. Теперь нам нужна служба Windows для автоматического создания этих отчетов каждый день.

Я создал службу, используя ту же логику, создал установщик и построил его, но при выполнении служба сохраняет только 14 отчетов и выдает это исключение:

Win32Exception: ошибка при создании дескриптора окна

Win32Exception: Error creating window handle

(Мой VS на португальском языке, вот перевод для вас, ребята :)

Я заметил, что использование ОЗУ процессом странным образом увеличивается, достигая 570 МБ при вызове исключения.

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

Мои сомнения:

1) Можно ли установить ограничение на использование оперативной памяти для службы, при необходимости очищать память после каждого сохраненного отчета? (если да, то как очистить память? включил вызов GC.Collec(); но безуспешно)

2) Возможно ли, что ReportViewer (компонент Windows.Form) вступает в конфликт с некоторыми вещами в компонентах служб Windows, вызывая ошибку?

С уважением ко всем


  • Я предполагаю, что использование ReportViewer в сервисном приложении, вероятно, плохая идея. Я уверен, что есть лучший способ создания отчетов, который не зависит от компонентов пользовательского интерфейса. 23.11.2017
  • У нас были похожие проблемы из-за нехватки оперативной памяти. Использование платформы x64 может помочь. 23.11.2017
  • Я согласен с @DavidG, но действительно необходимо обновлять все отчеты автоматически каждый день (приказы босса), я не уверен, смогу ли я изменить ReportViewer материал :( 23.11.2017
  • используя платформу x64 @Ugur? Можете ли вы объяснить это, пожалуйста? 23.11.2017
  • @GuilhermeGolfetto Я имею в виду, что переключение платформы с 32-битной на 64-битную систему может помочь увеличить объем виртуальной памяти для вашего кода / программы. 23.11.2017

Ответы:


1

Чтобы удовлетворить свои потребности, я решил создать консольное приложение и запустить пакетный файл, чтобы запускать его в планировщике заданий Windonws один раз в день.

Это не решение вопросов, но оно решило мою ситуацию.

30.11.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..