Что происходит, если Вы запускаете фоновый поток для выполнения прямо, прежде чем ASP.NET завершит его обработку страницы?

Очень хакерское решение, но оно работает. Я зацикливаю строки данных и использую addLabelOnlyMarkers с центроидом многоугольника строк, используя st_centroid. Я запускаю функцию pal на каждой итерации.

for(i in 1:nrow(nc2)) {
  text_col = pal(nc2$NAME[i])
  p <- p %>% 
    addLabelOnlyMarkers(data = st_centroid(nc2[i,]), 
                        label = ~NAME, 
                        labelOptions = labelOptions(
                            noHide = T, textOnly = T,
                            style = list('color' = text_col)
                        )
  )
}

Я все еще приветствую любое лучшее решение этого ...

5
задан cruizer 2 February 2009 в 08:00
поделиться

4 ответа

Я сделал некоторое экспериментирование с тем же типом кода, делающего некоторый трудоемкий вход в систему отдельного потока. Это, кажется, работает хорошо, но я не протестировал его в производственной среде.

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

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

1
ответ дан 15 December 2019 в 06:36
поделиться

Я сделал som преобразование видео / обрабатывающий с ffmpeg на фильмах, загруженных пользователями на веб-форме, и это работало прекрасное, даже если поток занял несколько часов для завершения! Очень важно иметь в виду, что трудно узнать состояние потока, таким образом регистрируясь, и обработка ошибок extreamly важный.

1
ответ дан 15 December 2019 в 06:36
поделиться

Коллега недавно сделал это для некоторого экспорта данных. Клиент вошел бы в (веб-) панель управления и затем нажимать некоторые кнопки и что не и затем файл был бы FTP'd прочь к некоторому мистическому серверу.

Фронтэнд был сделан с помощью Ajax ASP, и как @bang говорит, поток выполняется хорошо, но это - абсолютное дерьмо для отслеживания.

Ajax использовался для обновления индикатора выполнения и строки состояния в UI, который был хорош в теории и в то время как набор данных был только несколькими сотнями строк. Но как только мы начали работать с реальным набором данных (миллионы строк), весь UI не пустил взрыв с ошибками из-за тайм-аута. В этой точке Вы теряете связь с фоновым потоком...

Это все еще работает? Экспорт закончился? Что произойдет, если я обновлю страницу и нажму кнопку снова? Дом выполнения отправит два продукта людям?

Это - определенный кошмар. Он в настоящее время переписывает его для выполнения как консольное приложение, запланированное с планировщиком задач окон, соединенным проводом до таблицы заданий, которая содержит детали экспорта то выполнение потребности.

Если это кажется небольшим shonkey, Вы могли бы всегда писать свой продолжительный процесс с чем-то вроде сервера сокета и иметь Ваш код aspx - позади, общаются с этим.

1
ответ дан 15 December 2019 в 06:36
поделиться

Знайте, что рабочий IIS перерабатывает настройки, поскольку они могли все еще влиять на Ваш поток после того, как он был запущен. Удостоверьтесь, что Вы ловите любые исключения и регистрируете их.

0
ответ дан 15 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: