Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для Road_Runner
1 / 1 / 1
Регистрация: 06.10.2011
Сообщений: 43

Индикация работы с записями в отдельном потоке

23.07.2014, 17:10. Показов 1430. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток !

Имеется вот какая проблема работаю с большим кол-вом записей в БД во время работы процедур приложение как бы "зависает".

Для того чтобы пользователь не принял это за зависание программы хочу сделать индикацию через отдельный поток , но как это сделать не представляю возможным.

Подскажите пожалуйста!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.07.2014, 17:10
Ответы с готовыми решениями:

Как сделать код работы с Selenium в отдельном потоке? Timer?
Как сделать что б в одельном потоке работал код и не стопорил основную программу?? захожу под роутер и программа стопорится и надо вести...

Выполнение длительных операций в отдельном потоке с отображением этапов работы пользователю
Например есть код: private void button1_Click(object sender, EventArgs e) { listBox1.Items.Add("1"); FtpWebRequest request =...

Как правильно выделить код для работы в отдельном от интерфейса потоке?
Приветы. Сам не программист, поэтому прошу совета.:) Есть код который нужно выделить в отдельный поток от интерфейса(чтоб не подвисал во...

6
Native x86
Эксперт Hardware
 Аватар для quwy
6859 / 3791 / 1026
Регистрация: 13.02.2013
Сообщений: 11,861
23.07.2014, 19:04
Зачем поток? После обработки каждых N записей или двигаем прогрессбар или просто рисуем анимацию.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,672
Записей в блоге: 21
24.07.2014, 10:12
quwy,
в этом случае приложение все равно висит, только прогресс бар и работает

нужно делать все в потоке, но каждые N записей обновлять progressbar через Synchronize
1
 Аватар для Road_Runner
1 / 1 / 1
Регистрация: 06.10.2011
Сообщений: 43
24.07.2014, 12:10  [ТС]
krapotkin, это я понимаю ,но вот как это реализовать не представляю возможным.

Теорию по потокам(thread) я читал но что-то ничего не понял !
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,672
Записей в блоге: 21
24.07.2014, 12:22
Лучший ответ Сообщение было отмечено Road_Runner как решение

Решение

Road_Runner,
конкретика сильно зависит от используемой БД
чисто для наглядности

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
TMyThread=class(TThread)
  Query:TDataset;
  procedure Execute; override;
end;
 
procedure TMyThread.Execute;
var n:integer;
begin
  n:=0;
  while not (query.eof) do
  begin
    // что-то делаем
    ...
    inc(n);
    if n mod 100 = 0 then
       Synchronize(procedure begin Form1.progressbar1.position:=n end);
    query.next;
  end
end;
 
procedure TForm1.ThrTerminated(Sender:TObject);
begin
  showmessage('Поток завершился');
end;
 
....
  t:=TMyThread.Create(True);
  // вариант, если к-нить query создается в главном потоке
  t.query:=query;
  t.FreeOnTerminate:=true;
  t.OnTerminate := ThrTerminated;
  t.Start;
1
 Аватар для Road_Runner
1 / 1 / 1
Регистрация: 06.10.2011
Сообщений: 43
24.07.2014, 12:33  [ТС]
krapotkin, БД Firebird в связке с IBDataset.
В принципе ход мыслей ясен .
Или же есть отличия для других БД ??
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,672
Записей в блоге: 21
24.07.2014, 12:38
тонкость:
пока поток крутится, нельзя обращаться к FB из другого потока.
я обычно при создании потока в конструкторе вообще создаю отдельный Datamodule с отдельным соединением (Database)
тогда все ok
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.07.2014, 12:38
Помогаю со студенческими работами здесь

Создать приложение, в отдельном потоке вычисляющее значение w и непрерывно обновляющее его в потоке
Ребят, с потоками не работал не когда. Есть задание , я понимаю что хотят, а вот как сделать потоками хз . Создайте приложение, в...

GDI+. Почему в отдельном потоке картинки сохраняются как белые прямоугольники, а в основном потоке - всё Ок?
Всем привет, делаю функцию уменьшения картинок при помощи библиотеки GDI+, в отдельном потоке происходит уменьшение картинки и её...

Класс в отдельном потоке
Всем доброго дня и хорошего настроения! :) Подскажите, у меня есть класс Calculate как его запустить в отдельном потоке при нажатии на...

Cлоты в отдельном потоке
есть у меня QMap из другого потока приходит сигнал на чтение данных, есть еще функции вызываемые пользоввателем из гуи, которые...

FileWatch в отдельном потоке
Добрый день, возникла проблема в реализации. Нужно что бы изменения файлов мониторились в отдельном потоке, и при изменении выводились в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru