Dokku имеет то же основание, что и heroku.
Файловая система Heroku эфемерна, поэтому любые изменения в файловой системе будут жить только в последнем активном контейнере dokku, в котором запущено ваше приложение. Поэтому, когда вы нажимаете свой код, в основном, dokku создает новый контейнер с файлами вашего приложения, а затем заменяет его старым. То же самое происходит, когда вы закрываете или перезапускаете приложение.
Используя хранилище dokku, его можно заставить его работать, просто следуйте инструкциям этого руководства http://dokku.viewdocs.io/dokku~v0.7.2/advanced-usage/persistent-storage/ , но обратите внимание что вам придется использовать относительный путь ex. '/ app / storage' в вашем приложении, поэтому хранилище работает. Но по нашему опыту, после 1 года работы с приложениями dokku на prod, вы можете легко испортить файлы по таинственной причине того, как работает dokku.
Если вам действительно нужно хранить данные, я рекомендую использовать специальную службу хранения файлов, такую как AWS S3, это очень дешево. Есть несколько драгоценных камней, которые вы можете использовать для хранения, которые могут легко помочь вам обрабатывать ваши файлы в S3, такие как papeclip, dragonfly, activestorage (если вы используете rails 5.2).
Дочерние потоки не остановятся автоматически, если они не были конкретно установлены как фоновые потоки (т.е. с thread.IsBackground = true
).
Править: Также возможно, что основной поток не завершается, когда форма закрывается (т.е. существует другой код, который установлен бежать близко, который не завершается).
Я нахожу полезным присоединить к рабочему процессу с отладчиком и нажать кнопку паузы. После этого я осмотрел бы окно Threads и видел бы то, что отслеживание стека делает для каждого из выполняющихся потоков. Окно потоков скрыто по умолчанию. Вот больше информации о том, как показать его и использовать ее:
Можно хотеть изучить проводник процесса. Это помогает закрыть программы, и это может просмотреть потоки программы и потенциально указать на Вас в правильном направлении того, где сделать, программа ведет себя.
Мое предположение было бы то, что все потоки не останавливаются. Обычно можно закончить задачу программа, и она остановится все же. Возможно, один поток держался за системный ресурс, который это более трудно выпустить.
Если можно получить отладочную сборку, запустить программу и после того, как из программы "выходят", нажмите кнопку паузы в окне отладки. В той точке можно просмотреть потоки и узнать, какой подвешивается. Для помощи необходимо назвать потоки, когда они создаются (это - дополнительный параметр в функции.Start),
На большей части frundamental уровня где-нибудь существует бесконечный цикл.
Действительно ли форма запуска является той, которая это закрывается для выхода из приложения? Если это не Вы, должен поместить Приложение. Выход () или Среда. Выход () в form.closed событии формы, которая закрывается в последний раз.