Anonymous | Login | Signup for a new account | 23-11-24 09:27 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0002256 | SAS.Планета | Рефакторинг | public | 19-11-2013 15:53 | 21-11-2013 14:33 | ||||
Reporter | vdemidov | ||||||||
Assigned To | vdemidov | ||||||||
Priority | normal | Severity | major | Reproducibility | always | ||||
Status | resolved | Resolution | fixed | ||||||
Platform | Windows | OS | 7 | OS Version | Professional | ||||
Product Version | 121010 | ||||||||
Target Version | 140303 | Fixed in Version | 140303 | ||||||
Summary | 0002256: Зависание при ошибке в конструкторе потоков обработки операций с выделенной областью | ||||||||
Description | Сейчас все операции с выделенной областью реализованы в виде наследников TThread автоматически запускаемого при создании. При любом ексепшене в конструкторе этих классов в Delphi 2007 (в других может быть по-другому) программа тупо зависает. Похоже самое надежное решение - стартовать созданный поток отдельно в провайдерах операций с выделенной областью. Добавится по одной строчке на каждое создание потока. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | |||||||||
Relationships | ||||||
|
Notes | |
(0013294) zed (manager) 21-11-2013 14:25 |
По-моему в Delphi потоки всегда создаются приостановленными и запускаются только в методе TThread.AfterConstruction, если пользователь явно не указал Suspended = True. Т.е. если у нас происходит исключение в конструкторе, то AfterConstruction не вызовется (как и Destroy) и поток так и останется зависшим. И то, что ты переделал на Suspended = True и ручной вызов Resume после конструктора, по-моему ничего не изменит. Скорее всего тут дополнительно нужно ещё весь конструктор обернуть в try/except и при исключении выставлять флаг, который и проверять перед вызовом Resume. P.S. И ещё - метод Resume объявлен как deprecated в D2010 и выше. |
(0013295) vdemidov (manager) 21-11-2013 14:33 |
Изменит. Проверял в дебагере, но только под 2007 делфой, под другими не знаю. >P.S. И ещё - метод Resume объявлен как deprecated в D2010 и выше. Увы, но альтернатива ему метод Start (не помню точное название) в 2007 делфе еще не определен, так что до полного перехода на XE2 придется терпеть. |
Issue History | |||
Date Modified | Username | Field | Change |
19-11-2013 15:53 | vdemidov | New Issue | |
19-11-2013 15:53 | vdemidov | Issue generated from: 0002019 | |
19-11-2013 15:53 | vdemidov | Relationship added | related to 0002019 |
19-11-2013 15:53 | vdemidov | Status | new => confirmed |
21-11-2013 13:00 | vdemidov | Status | confirmed => resolved |
21-11-2013 13:00 | vdemidov | Fixed in Version | => 140303 |
21-11-2013 13:00 | vdemidov | Resolution | open => fixed |
21-11-2013 13:00 | vdemidov | Assigned To | => vdemidov |
21-11-2013 14:25 | zed | Note Added: 0013294 | |
21-11-2013 14:33 | vdemidov | Note Added: 0013295 |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |