Вы можете использовать инструкцию ATTACH DATABASE
в SQLite. Вот документация
Когда вы присоединяете базу данных, используйте что-то подобное INSERT INTO DestinationTable SELECT * FROM attachedDatabase.SourceTable
fun migration(context: Context) {
val destinationDb = DatabaseHelper2(context)
val sourceDbPath = context.getDatabasePath("database1.sqlite")
val writableDb = destinationDb.writableDatabase
writableDb.execSQL("ATTACH DATABASE '${sourceDbPath.absolutePath}' AS attached")
writableDb.execSQL("INSERT INTO DestinationTable SELECT * FROM attached.SourceTable")
}
Можно выполнить то, что Вы хотите, но это обычно - плохая идея. Несколько блогов ASP.NET и механизмов CMS проявляют этот подход, потому что они хотят быть устанавливаемыми в общей системе хостинга и не взять зависимость от сервиса окон, который должен быть установлен. Обычно они начинают длительный поток в Global.asax, когда приложение запускается, и имейте стоявшие в очереди задачи процесса того потока.
В дополнение к сокращению ресурсов, доступных IIS/ASP.NET для обработки запросов, у Вас также есть проблемы с потоком, уничтожаемым, когда AppDomain переработан, и затем необходимо иметь дело с персистентностью задачи, в то время как это в полете, а также запуск работы назад, когда AppDomain возвращается.
Имеют в виду, что во многих случаях AppDomain переработан автоматически в интервале по умолчанию, а также если Вы обновляете web.config, и т.д.
, Если можно обработать персистентность и транзакционные аспекты потока, уничтожаемого когда-либо, затем можно обойти переработку AppDomain при наличии некоторого внешнего процесса, который выполняет запрос на сайте в некотором интервале - так, чтобы, если сайт переработан, у Вас, как гарантировали, будет он, отшатываются снова автоматически в течение X минут.
Снова, это обычно - плохая идея.
РЕДАКТИРОВАНИЕ: Вот некоторые примеры этой техники в действии:
Общественный Сервер: Используя Windows Services по сравнению с Фоновым потоком для Выполнения Кода в Запланированных Интервалах Создание Фонового потока, Когда Веб-сайт Сначала Запускается
РЕДАКТИРОВАНИЕ (от далекого далекого будущего) - В эти дни, я использовал бы Hangfire.
Вы не хотели бы использовать поток от пула потоков IIS для этой задачи, потому что это оставит тот поток не могущим обработать будущие запросы. Вы могли изучить Асинхронные Страницы в ASP.NET 2.0 , но это действительно не будет правильным ответом, также. Вместо этого что это кажется, что Вы извлекли бы выгоду из, изучает Microsoft Message Queuing . По существу Вы добавили бы, что задача назначает в очередь, и другой фоновый процесс (возможно служба Windows) ответил бы за выполнение той задачи. Но нижняя строка - то, что фоновый процесс полностью изолируется от IIS.
Можно ли создать сервис окон, чтобы сделать ту задачу? Затем используйте дистанционную работу.NET от веб-сервера для вызова службы Windows, чтобы сделать действие? Если это так, именно это я сделал бы.
Это избавило бы от необходимости к реле на IIS и ограничило бы часть его вычислительной мощности.
, Если не затем я вынудил бы пользователя сидеть там, в то время как процесс сделан. Тем путем Вы удостоверяетесь, что это завершается и не уничтожается IIS.
Просто создайте процесс-заменитель для выполнения асинхронных задач; это не должен быть сервис окон (хотя это - более оптимальный подход в большинстве случаев. MSMQ является путем, законченным уничтожение.