View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0002256 | SAS.Планета | Рефакторинг / Refactoring | 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. | ||||
|
|
По-моему в Delphi потоки всегда создаются приостановленными и запускаются только в методе TThread.AfterConstruction, если пользователь явно не указал Suspended = True. Т.е. если у нас происходит исключение в конструкторе, то AfterConstruction не вызовется (как и Destroy) и поток так и останется зависшим. И то, что ты переделал на Suspended = True и ручной вызов Resume после конструктора, по-моему ничего не изменит. Скорее всего тут дополнительно нужно ещё весь конструктор обернуть в try/except и при исключении выставлять флаг, который и проверять перед вызовом Resume. P.S. И ещё - метод Resume объявлен как deprecated в D2010 и выше. |
|
|
Изменит. Проверял в дебагере, но только под 2007 делфой, под другими не знаю. >P.S. И ещё - метод Resume объявлен как deprecated в D2010 и выше. Увы, но альтернатива ему метод Start (не помню точное название) в 2007 делфе еще не определен, так что до полного перехода на XE2 придется терпеть. |
| 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 | |
| 08-08-2025 13:25 | zed | Category | Рефакторинг => Рефакторинг / Refactoring |