C # Запуск кода без блокировки навигации - PullRequest
0 голосов
/ 01 апреля 2019

Я создаю приложение, которое генерирует файлы Excel в asp .net core 2.2. Генерация Excel может занять некоторое время в зависимости от потребностей пользователя. (как иногда, это до 20-30 с).

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

Ответы [ 3 ]

3 голосов
/ 01 апреля 2019

Запуск генерации в фоновом режиме.сгенерируйте имя файла excel и сохраните отношение либо в БД, либо в токене (зависит от ваших потребностей).когда поток будет генерировать статус обновления файла Excel в дБ.Вы можете уведомить пользователя или позволить пользователю увидеть информацию на определенной странице.Есть еще много способов сделать это, хотя ...

1 голос
/ 01 апреля 2019

Не столько технический, специфичный для c # вопрос, но скорее проблема UX.

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

Когда служба запускает генерацию, на странице просто отображается сообщение «Пожалуйста, подождите, генерация ...».

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

0 голосов
/ 02 апреля 2019

В JS вы можете открыть новую вкладку, и вы будете обрабатывать файл Excel на этой новой вкладке.

Или вы можете создать файл excel на serveur (показывая, что он создается в данный момент)без блокировки навигации, и когда ваш пользователь возвращается на страницу создания, если файл найден, вы можете сделать его загружаемым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...