Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Web > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 15.11.2018, 13:46   #1
artemavd
Модератор
Заслуженный модератор
 
Регистрация: 05.06.2008
Адрес: г.Иркутск
Сообщений: 4,180
Репутация: 837
Радость TThread (потоки) при загрузке файлов в базу SQL Server - как загрузить файл размером 100 мб в базу данных SQL Server, обработать и выгрузить его из базы?

Добрый день!
Пытаюсь начать работать с потоками, т.к. стало интересно: как загрузить файл размером 100 мб в базу данных SQL Server, потом выгрузить его оттуда, произвести кое какие действия. Получается 3 этапа.
Сделал так:
Код:
//Объявил класс потока в модуле, где основная процедура, в которой выполняются все 3 этапа:
  TMyThread = class(TThread)
    private
    { Private declarations }
  protected
    procedure Execute; override;
    procedure Working;
  end;

....
procedure TMyThread.Working;
begin
  //тут делаются 3 этапа эти
  EditOneFile;
end;

procedure TMyThread.Execute;
begin
  Synchronize(Working);
end;

//не уверен в правильности этого:
procedure NewProcedure;
begin
  MyThread:=TMyThread.Create(False);
  MyThread.Priority:=tpHigher;
  MyThread.FreeOnTerminate:=True;
end;
В последнем блоке кода я хотел запустить свой поток.
То, есть, нажимается кнопка, запускается процедура NewProcedure, в которой должен отработать поток.

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


Подскажите что я не так делаю?
__________________
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума   Ответить с цитированием
Старый 15.11.2018, 14:11   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,787
Репутация: 6622
По умолчанию

Код:
  MyThread:=TMyThread.Create(False);
//после Create с False поток сразу запустится и до следующей команды уже может и завершится
  MyThread.Priority:=tpHigher;
Код:
procedure TMyThread.Execute;
begin
  Synchronize(Working);
end;
Какой смысл весь код потока синхронизировать?
Цитата:
расположен компонент анимации, который просто крутится, давая понять юзеру, что программа не зависла.
Он может и в своем собственном потоке крутиться, смотря какой )
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 15.11.2018, 14:16   #3
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 18,733
Репутация: 3673

icq: 512-765
skype: alexp.frl
По умолчанию

Так чтобы понять запускается ли добавьте логирование или брекпоинт поставьте.

Но код бессмысленный, Synchronize же просто приведет к выполнению всего в UI потоке.

И что за странные имена у функций и процедур? Их обычно стараются делать глаголами. StartThread, Work/DoWork (вторая конечно вообще не нужна потому что и так есть Execute).
Alex11223 на форуме   Ответить с цитированием
Старый 15.11.2018, 19:34   #4
artemavd
Модератор
Заслуженный модератор
 
Регистрация: 05.06.2008
Адрес: г.Иркутск
Сообщений: 4,180
Репутация: 837
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
  MyThread:=TMyThread.Create(False);
//после Create с False поток сразу запустится и до следующей команды уже может и завершится
  MyThread.Priority:=tpHigher;
Код:
procedure TMyThread.Execute;
begin
  Synchronize(Working);
end;
Какой смысл весь код потока синхронизировать?
Он может и в своем собственном потоке крутиться, смотря какой )
Ну, а как надо тогда? Без синхронизации?
Мне надо, чтобы анимация крутилась, и все 3 этапа обратаывалтсь, чтобы программа не висела))
__________________
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума   Ответить с цитированием
Старый 15.11.2018, 21:03   #5
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 18,733
Репутация: 3673

icq: 512-765
skype: alexp.frl
По умолчанию

Синхронизировать работу с UI компонентами, а не все подряд.
Alex11223 на форуме   Ответить с цитированием
Старый 16.11.2018, 05:01   #6
artemavd
Модератор
Заслуженный модератор
 
Регистрация: 05.06.2008
Адрес: г.Иркутск
Сообщений: 4,180
Репутация: 837
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Синхронизировать работу с UI компонентами, а не все подряд.
Как?
А можно ли выводить информацию о том, сколько процентов прошло от загрузки файла в базу? Что-то типа прогрессбара, отображающего ход загрузки.
__________________
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума   Ответить с цитированием
Старый 16.11.2018, 09:33   #7
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,787
Репутация: 6622
По умолчанию

А как и какими средствами загружаешь?
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 16.11.2018, 10:19   #8
Alex11223
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 18,733
Репутация: 3673

icq: 512-765
skype: alexp.frl
По умолчанию

Код:
while ...
begin
  DoSomething();
  Synchronize(UpdateProgress);
end;
Alex11223 на форуме   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать базу данных в sql server Shuhrat94 SQL, базы данных 0 19.12.2017 20:46
как загрузить путь к файл в БД sql server при помощи C# Samsung100 C# (си шарп) 2 13.05.2014 11:29
sql server+delph,при попытке сохранить базу в дельфи выдает ошибку adotable dataset not in edit or insert betirsolt БД в Delphi 3 07.05.2010 21:44
Подключение к базу данных SQL Server на VB.Net uchenik Помощь студентам 0 22.03.2010 11:50
перенести базу SQL Server S_Yevgeniy БД в Delphi 4 29.11.2009 18:13


22:30.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru