У меня есть метод импорта файла в приложении WPF, который читает файл и вставляет некоторые записи в БД.
Этот метод выполняется в объекте BackgroundWorker
.
У меня есть индикатор выполнения, который обновляется при вызове Dispatcher.Invoke
. Если я запускаю как есть, импорт 200k записей занимает ~ 1 минуту, если я просто не показываю никакого прогресса, это занимает всего 4-5 секунд! И если я использую Dispatcher.BeginInvoke
с приоритетом Background
, это займет те же 4-5 секунд, но индикатор выполнения + счетчик обновляются и занимают ~ 1 минуту. Итак, очевидно, что здесь проблема с пользовательским интерфейсом.
И другая проблема в том, что мне нужно показать прогресс, поэтому я подумал, есть ли способ использовать Dispatcher.BeginInvoke
, но сначала проверь, есть ли что-нибудь в очереди, и если да, я просто пропускаю это, что будет вести себя так: в 1-й секунде выполнено 1%, через 2 секунды выполнено 50%, а в 4-ю секунду выполнено 100%).
Любая помощь в этом?
спасибо !!!