Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не срабатывает отключение от базы пока не закрыта форма. / 25 сообщений из 99, страница 1 из 4
30.07.2017, 09:34:17
    #39497151
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Не срабатывает отключение от базы пока не закрыта форма. Код такой, выполняется в потоке:
Код: pascal
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.
 begin
                           db3:=TpFIBDatabase.Create(nil);
                            trans3:= TpFIBTransaction.Create(nil);
                            query3:= TpFIBQuery.Create(nil);
                            db3.connectparams.Username:='SYSDBA';
                            db3.connectparams.Password:='masterkey';
                            db3.DatabaseName:='d:\fdbase\fb_log_database.fdb';
                            db3.DefaultUpdateTransaction:=trans3;
                            db3.LibraryName:= 'fbclient.dll';
                            trans3.DefaultDatabase:=db3;
                            query3.Database:=db3;
                            query3.Transaction:=trans3;
                            db3.connected:=True;
                                FindClose(tsr1);
                                query3.SQL.Clear;
                                query3.SQL.Add('insert into IMPORT_EXISTS_LOG (WRITE_TIME,KIND,USER_ID) values (current_timestamp,:KIND,:USER_ID)');
                                trans3.StartTransaction;
                                query3.ParamByName('KIND').Value:= Fkind;
                                query3.ParamByName('USER_ID').Value:= Fuser;
                                query3.ExecQuery();
                                trans3.Commit;
                                trans3.Free;
                                query3.Free;
                                 db3.connected:=False;
                                db3.Close;
                                  db3.Free;
                                    end;

...
Рейтинг: 0 / 0
30.07.2017, 10:44:14
    #39497166
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
...
Рейтинг: 0 / 0
30.07.2017, 11:52:03
    #39497191
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Gallemar,

как понял, что не срабатывает? На форме тоже есть подключение?
...
Рейтинг: 0 / 0
30.07.2017, 11:58:58
    #39497193
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
wadmanGallemar,

как понял, что не срабатывает?


В mon$attachments коннекты висят, пока форму не закрою.
wadman На форме тоже есть подключение?
в том то и дело, что нету. Давай кину проектом, так проще будет.
...
Рейтинг: 0 / 0
30.07.2017, 12:31:45
    #39497202
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Gallemar,

х.з. может, мониторинг где-то в fibplus включен, и это конфликтует с открытием и закрытием коннекта в треде. "В старину" даже коннект в треде глючил, поэтому коннект-дисконнект делался в основном потоке.
Но это все мои домыслы.
...
Рейтинг: 0 / 0
30.07.2017, 13:20:48
    #39497211
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Gallemarwadman На форме тоже есть подключение?
в том то и дело, что нету. Давай кину проектом, так проще будет.
Я у компа сегодня вряд-ли буду. Выкладывай, кто-то еще посмотрит. :-)
...
Рейтинг: 0 / 0
30.07.2017, 13:35:54
    #39497218
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
...
Рейтинг: 0 / 0
30.07.2017, 13:38:28
    #39497219
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
kdvGallemar,

х.з. может, мониторинг где-то в fibplus включен, и это конфликтует с открытием и закрытием коннекта в треде.
Вряд ли, я всё прописывал в run-time, не помню ничего такого в fibplus, что могло по умолчанию быть.
kdv"В старину" даже коннект в треде глючил, поэтому коннект-дисконнект делался в основном потоке.
На фибах?
...
Рейтинг: 0 / 0
30.07.2017, 18:29:57
    #39497314
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Gallemar,

Попробуй фибам делать FreeAndNil вместо free
...
Рейтинг: 0 / 0
30.07.2017, 19:53:46
    #39497342
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Док,
С точки зрения фибов это не изменит ничего.
...
Рейтинг: 0 / 0
30.07.2017, 19:55:20
    #39497343
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Gallemar,

А если вот так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
                  
trans3.Commit;
db3.Close;
db3.Сonnected := False;
query3.Free;
trans3.Free;
db3.Free;
...
Рейтинг: 0 / 0
30.07.2017, 19:56:18
    #39497344
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
alekcvp,
И ещё
Код: pascal
1.
query3.Close


сразу после коммита.
...
Рейтинг: 0 / 0
30.07.2017, 21:15:38
    #39497372
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
alekcvpС точки зрения фибов это не изменит ничего.
ага, а два контрольных выстрела
Код: pascal
1.
2.
db3.Close;
db3.Сonnected := False;


уж точно изменит
...
Рейтинг: 0 / 0
30.07.2017, 21:36:14
    #39497380
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
ДокalekcvpС точки зрения фибов это не изменит ничего.
ага, а два контрольных выстрела
уж точно изменит
Заметь, я просто поменял местами строчки оригинального кода
...
Рейтинг: 0 / 0
30.07.2017, 22:51:10
    #39497406
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
alekcvpGallemar,

А если вот так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
                  
trans3.Commit;
db3.Close;
db3.Сonnected := False;
query3.Free;
trans3.Free;
db3.Free;



alekcvpЗаметь, я просто поменял местами строчки оригинального кода


5 строк кода после коммита можно переставить 120 способами. Не все из них корректные, но все же...
...
Рейтинг: 0 / 0
30.07.2017, 22:56:56
    #39497407
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
schi5 строк кода после коммита можно переставить 120 способами. Не все из них корректные, но все же...
В оригинале там транзакция уничтожается раньше, чем закрывается запрос, её использующий.
...
Рейтинг: 0 / 0
30.07.2017, 23:05:45
    #39497413
schi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
alekcvpschi5 строк кода после коммита можно переставить 120 способами. Не все из них корректные, но все же...
В оригинале там транзакция уничтожается раньше, чем закрывается запрос, её использующий.

В оригинале там трэш, угар и содомия. От людей, вкладывающих exeшники и dcu в архивы проекта, я не жду ничего хорошего.
...
Рейтинг: 0 / 0
31.07.2017, 03:58:36
    #39497458
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
ДокGallemar,

Попробуй фибам делать FreeAndNil вместо free
Привет. Это я пробовал ещё до обращения на форум,не помогло.
...
Рейтинг: 0 / 0
31.07.2017, 03:59:17
    #39497459
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
alekcvpДокпропущено...

ага, а два контрольных выстрела
уж точно изменит
Заметь, я просто поменял местами строчки оригинального кода
Не помогло. Решил пока в качестве эксперимента переписать всё на ibx.
...
Рейтинг: 0 / 0
31.07.2017, 08:52:52
    #39497515
krapotkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
ыыы. интересный выстрел)
Если вас это утешит, то на FIB все закрывается корректно у меня вплоть до версии Berlin.
Единственная найденная проблема тянется еще из дремучих времен и относится к FibAlerter
Поэтому пришлось отказаться от событий. Но в целом нужно просто найти проблему и решить.
А "переписать на ibx" это выглядит как-то чрезмерно )
...
Рейтинг: 0 / 0
31.07.2017, 09:02:57
    #39497523
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Gallemar,

у тебя в потоке запускаются процессы, с которыми нет обратной связи до определенного момента. Я вижу два варианта решения проблемы:
1. можно завести какой-нибудь булев флаг и перед запуском очередного процесса в потоке проверять, нет ли команды прикончить поток(флаг взводить в OnCloseQuery формы), типа
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TMyThread.Execute
try
  if IsThreadTerm then exit;
  //запуск какого-то процесса

  if IsThreadTerm then exit;
  //запуск какого-то процесса

  if IsThreadTerm then exit;
  //запуск какого-то процесса

finally
  //всяческие FreeAndNil
end;



2. завести булев флаг, но сигнализирующий о продолжении или окончании потока, и и не давать закрываться форме (так же , в OnCloseQuery), пока поток не помрет естественной смерьтю.
...
Рейтинг: 0 / 0
31.07.2017, 09:03:23
    #39497524
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
krapotkinПоэтому пришлось отказаться от событий. Но в целом нужно просто найти проблему и решить.

Пока, увы, не получается.
krapotkinА "переписать на ibx" это выглядит как-то чрезмерно )
Почему? Программа простая.
...
Рейтинг: 0 / 0
31.07.2017, 09:06:07
    #39497526
Док
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
ДокЯ вижу два варианта решения проблемы
кстати, эти два варианта можно объединить в третий: взвести флаг потоку, что ему нужно помереть при первой возможности, но форме не давать закрыться до смерти потока.

зы. это при условии, что у тебя проблема НЕ из-за неправильной логики в коде :)
...
Рейтинг: 0 / 0
31.07.2017, 09:08:28
    #39497530
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Док,хм, Эдик, а у меня в потоке формы не открываются, никакие. Есть одна, на которой кнопка для ручного запуска и кнопка для запуска таймера. Всё.
...
Рейтинг: 0 / 0
31.07.2017, 09:09:18
    #39497531
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает отключение от базы пока не закрыта форма.
Все таки не "пока не закрыта форма", а "пока не закрыто приложение".
И нет строки db4.free. В общем, ищи соединение, которое остается открытым в потоке.

Ну и лапшу-бы прибрать: вынести создание базы, транзакции и запроса и их уничтожение в отдельные процедуры.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не срабатывает отключение от базы пока не закрыта форма. / 25 сообщений из 99, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]