Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2011-07-20 09:53:30 ЛС | профиль | цитата
Добрый день

Подскажите почему Timer не отрабатывает второй раз?
Вроде все просто как 2х2, а не работает
code_24679.txt
карма: 1

0
файлы: 1code_24679.txt [621B] [173]
Ответов: 3889
Рейтинг: 362
#2: 2011-07-20 10:16:08 ЛС | профиль | цитата
-= DriveR =-, потому, что нельзя инициализировать из потока, порождённого таймером, этот же таймер
карма: 1

0
Разработчик
Ответов: 26156
Рейтинг: 2127
#3: 2011-07-20 10:17:52 ЛС | профиль | цитата
-= DriveR =- писал(а):
Подскажите почему Timer не отрабатывает второй раз?

А так

code_24680.txt
карма: 22

0
файлы: 1code_24680.txt [630B] [133]
Ответов: 817
Рейтинг: 52
#4: 2011-07-20 10:32:40 ЛС | профиль | цитата
1nd1g0, ничего не понял, может на пальцах попробуешь объяснить
nesco, Спасибо, так работает
А почему мой вариант не отрабатывал? Он же логически верный
карма: 1

0
Ответов: 3889
Рейтинг: 362
#5: 2011-07-20 10:39:18 ЛС | профиль | цитата
-= DriveR =-, всё, что "растёт" из точки onTimer - работает в независимом потоке с независимым контекстом, у этой ветки банально нет доступа к флагу активности таймера, т.к. создавался он в контексте основной формы. Вообще поосторожнее с таймерами, несмотря на механизм отложенного срабатывания (OverCall), встречаются конфликты доступа к одним и тем же ресурсам двух потоков, порождённых одним таймером. Особенно осторожно надо работать из параллельных потоков с элементами интерфейса, при вероятности параллелизма, желательно - вообще не работать с ними на прямую.
карма: 1

0
Ответов: 817
Рейтинг: 52
#6: 2011-07-20 10:48:35 ЛС | профиль | цитата
1nd1g0, про независимый поток понял, а остальное как то с трудом. Буду экспериментировать
Спасибо
карма: 1

0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)