Я не программист, просто эникей.
Есть формочка в которой производятся манипуляции с базами - создание, удаление, импорт, экспорт. С созданием и удалением все просто - операции быстрые и формочка не зависает и даже при создании базы прекрасно отображается процесс в прогресс баре, да и код собственного говоря помещен в саму формочку из-за его малого объема.
Но дальше я начал заниматься реализаций импорта данных базы из файла. Так как код обещал быть достаточно больших размеров(куча проверок и прочей лабуды) я решил вынести всё это в отдельный объект который по нажатию на кнопочку будет создаваться и отрабатывать.
Суть работы объекта на пальцах:
-Задаем путь до файлов
-Чистим базу
-По порядку передаем файлы на обработку
---Обработка
----цикл Пока не конец файла
-----Читаем строку
-----Записываем в базу строку
----конец цикла
---Конец обработки
Код написан, он даже почти работает(осталось допили парсинг нескольких файлов и пофиксить мелки баги) но на время работы объекта формочка напрочь зависает(не отвечает) - как следствие не отображается прогресс в прогрессбаре и лог не пишется в окошко. Вызов объекта состоит из всего одного метода, все остальные действия производятся внутри. Несмотря на то что окно зависло и полное ощущение того что все плохо. По данным с мускуля видно что программа работает и запись в базу идет.
Как сделать так что бы формочка не умирала на время выполнения импорта? Вынести в отдельный поток и общаться сигналами-слотами? Если мы получили строку то лучше её сразу в базу кидать или лепить один большой запрос для допустим 100 срок и только потом его отправлять? Хотелось бы что бы это по памяти не вылезло хотя бы за 100 мегобайт. Пока это операция при последовательной отправке строк не вылазит за 50 мегов.