|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.01.2013, 17:58 | #1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
TThread. Почему нельзя выполнить start в конструкторе класса а resume можно?
Доброго времени суток!
Имеется код: Код:
Данным методом Thread обзавелся в новых версиях delphi и выглядит он вот так: Код:
Код:
Вопрос: Это прикол такой в методе start и в случае успеха и в случае провала - выдавать ошибку? НО и тут все хитро: Если вызвать start за пределами конструктора(ну пускай это делает владелец), то все нормально. Созданный поток в приостановленном состоянии продолжает работать. Возникает завидный парадокс, Поток создан приостановленным, почему именно в конструкторе класса ResumeThread возвращает значение <> 1, а вне = 1. Как это может быть и почему оно происходит? Последний раз редактировалось Человек_Борща; 09.01.2013 в 18:01. |
09.01.2013, 19:44 | #2 |
Старожил
Регистрация: 26.04.2008
Сообщений: 2,645
|
Предохраняются. Там пометка есть, мол вредно из самого потока себя же запускать/тормозить, т.к. если этот кусок в блоке синхронизации, то он может второе пришествие ожидать если не уследили. При огромных программах такое может и случится, но в мелких масштабах это легко видится.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему нельзя повернуть колонтитул? | palladin90 | Microsoft Office Word | 1 | 17.06.2012 23:23 |
Динамическое Выделение Памяти В Конструкторе Класса | D-Vampire | Общие вопросы C/C++ | 5 | 20.12.2011 00:34 |
Объект одного класса в конструкторе другого | Benderbej | PHP | 5 | 13.02.2011 22:48 |
Почему из метода класса нельзя обратиться к компоненту на форме? | Дима я | Общие вопросы Delphi | 2 | 28.03.2010 13:21 |
Метод Synchronize класса TThread | EdNovice | Общие вопросы Delphi | 10 | 01.08.2009 14:47 |