Добрый день
Подскажите почему Timer не отрабатывает второй раз?
Вроде все просто как 2х2, а не работает
code_24679.txt
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
|
|||
карма: 1 |
| ||
файлы: 1 | code_24679.txt [621B] [173] |
Ответов: 3889
Рейтинг: 362
|
|||
-= DriveR =-, потому, что нельзя инициализировать из потока, порождённого таймером, этот же таймер
|
|||
карма: 1 |
|
Разработчик
Ответов: 26156
Рейтинг: 2127
|
|||
карма: 22 |
| ||
файлы: 1 | code_24680.txt [630B] [133] |
Ответов: 817
Рейтинг: 52
|
|||
1nd1g0, ничего не понял, может на пальцах попробуешь объяснить
nesco, Спасибо, так работает А почему мой вариант не отрабатывал? Он же логически верный |
|||
карма: 1 |
|
Ответов: 3889
Рейтинг: 362
|
|||
-= DriveR =-, всё, что "растёт" из точки onTimer - работает в независимом потоке с независимым контекстом, у этой ветки банально нет доступа к флагу активности таймера, т.к. создавался он в контексте основной формы. Вообще поосторожнее с таймерами, несмотря на механизм отложенного срабатывания (OverCall), встречаются конфликты доступа к одним и тем же ресурсам двух потоков, порождённых одним таймером. Особенно осторожно надо работать из параллельных потоков с элементами интерфейса, при вероятности параллелизма, желательно - вообще не работать с ними на прямую.
|
|||
карма: 1 |
|
Ответов: 817
Рейтинг: 52
|
|||
1nd1g0, про независимый поток понял, а остальное как то с трудом. Буду экспериментировать
Спасибо |
|||
карма: 1 |
|
6