powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMonitor. Object lock not owned
8 сообщений из 8, страница 1 из 1
TMonitor. Object lock not owned
    #39723635
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Delphi 10.2.2 Linux

Дорогие форумчане, есть такой код. Вот при каких условиях может возникнуть ошибка?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
 if realD = nil then exit;
        try
          TMonitor.Enter(realD, TIME_OUT_CS);
          TRY
            try
              if realD.ContainsKey(Dkey) then
              begin
                realD.remove(Dkey);
                isKeyFound := True;
              end
              else
                isKeyFound := false;
              realD.Add(Dkey, Value);
            except
              on E: exception do err := E.Message;
            end;
          FINALLY
            TMonitor.Exit(realD);
          END;
...
Рейтинг: 0 / 0
TMonitor. Object lock not owned
    #39723665
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изменяется значение realD
...
Рейтинг: 0 / 0
TMonitor. Object lock not owned
    #39723684
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,
Оно изменяется, но не в промежутке же или может?
TMonitor.Enter(realD, TIME_OUT_CS);
....
TMonitor.Exit(realD);
...
Рейтинг: 0 / 0
TMonitor. Object lock not owned
    #39723686
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, скорее всего TimeOut ожидания монитора превышен и он пытается выполнить exit в finally

З.Ы. Пятница((
...
Рейтинг: 0 / 0
TMonitor. Object lock not owned
    #39723718
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbОно изменяется, но не в промежутке же или может?Зависит от того, что это за переменная и имеют ли к ней доступ другие потоки.
cptngrbБлин, скорее всего TimeOut ожидания монитора превышен и он пытается выполнить exit в finallyТоже возможно
...
Рейтинг: 0 / 0
TMonitor. Object lock not owned
    #39723734
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другие потоки тоже имеют к ней доступ через такой же механизм
...
Рейтинг: 0 / 0
TMonitor. Object lock not owned
    #39723822
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb,
TMonitor.Enter в данной модификации это функция, и её результат надо проверять
Код: pascal
1.
class function Enter(const AObject: TObject; Timeout: Cardinal): Boolean; overload; static;
...
Рейтинг: 0 / 0
TMonitor. Object lock not owned
    #39724289
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan), точно
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / TMonitor. Object lock not owned
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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