Вверх ↑
Ответов: 3889
Рейтинг: 362
#1: 2011-10-15 13:14:02 ЛС | профиль | цитата
Neo писал(а):
вставляя таймер в любом месте отдельного потока, мы получаем синхронизированный с основным потоком итерации?

Если не ошибаюсь, тут все события Timer.onTimer вызываются обработчиком сообщений в контексте оконной процедуры. То есть можете считать это воображаемой "точкой", выходящей из MainForm (даже если таймер трижды вложен в контейнера и регистрируется параллельным потоком). Например, у моего плагина qsearch нет своей формы (он вообще является dll-библиотекой), но это не мешает ему зарегистрировать в системе таймер. Система с указанными ей интервалами присылает обработчику HiAsm сообщения с указанием процедуры в моей библиотеке, которую нужно вызвать. Соответственно, вызов происходит в контексте конструктора, при желании я могу поковыряться в его памяти. По этой же причине я долго не хотел пользоваться таймерами и в любой момент готов их убрать - мало ли, конструктор запустит мой плагин в отдельном потоке и часть после таймера получит шанс одновременно обратиться к памяти, используемой остальным плагином. Там видна перестраховка в виде SafeMode, по хорошему там я бы ещё парочку поставил
карма: 1

0