В моем приложении Metro 8 для Windows у меня есть таблица в базе данных SQLite, иногда приходится обновлять большое количество записей (от 500 до 600). Я получаю записи из веб-службы, и я просматриваю записи и вставляю их в таблицу. Проблема в том, что эта операция занимает от 10 до 15 секунд, и она блокирует пользовательский интерфейс, включая индикатор выполнения. Код ниже.Вставка большого количества записей в базу данных Sqlite
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() =>
{
foreach (var item in body3)
{
db.Insert(new Site
{
siteName = item.siteName,
siteAddress = item.siteAddress,
siteCity = item.siteCity,
siteState = item.siteState,
siteID = item.siteID
});
progressBar.Value = i;
i++;
}
});
Я думаю, что это проблема с SQLite. Похоже, я не могу исключать из этого исключения.
Я думаю, что мой реальный вопрос заключается в том, как заставить это работать правильно в другом потоке, чтобы он не влиял на пользовательский интерфейс. Я не обеспокоен тем, что для вставки записей требуется некоторое время. Я просто хочу, чтобы пользовательский интерфейс оставался отзывчивым.
Спасибо! Это сделал трюк. –
Добро пожаловать Брайан :) – Xyroid
На самом деле то, что лучше работает, это обернуть цикл foreach в транзакции. Теперь процесс настолько быстрый, что мне больше не нужен индикатор выполнения. Это продолжалось от 10 до 15 секунд до менее чем секунды. –