Снова Threads, почему ошибка?
Заранее спсибо...
Насколько я понял , у тебя проблема с Synchronize'ом. Ты наверно его вызывашь в каком то "случвйном" месте программы? Если да , то это не правильно, Synchronize может вызываться только из Execute потока.
Цитата:
Originally posted by horst
Насколько я понял , у тебя проблема с Synchronize'ом. Ты наверно его вызывашь в каком то "случвйном" месте программы? Если да , то это не правильно, Synchronize может вызываться только из Execute потока.
Насколько я понял , у тебя проблема с Synchronize'ом. Ты наверно его вызывашь в каком то "случвйном" месте программы? Если да , то это не правильно, Synchronize может вызываться только из Execute потока.
Нет ты неправильно меня понял, я не использовал функцию Synchronize.
Ошибка возникает при использовании переменных из др. формы, а не при синхронизации потоков.
Цитата:
Originally posted by Тимофей
Просветите кто знает. Почему при выполнении функции в потоке возникает ошибка AccessViolation. Функция работает с публичными данными обьявленными в главной форме. Да, и если нетрудно обьясните как с Synchronize работать.
Заранее спсибо...
Просветите кто знает. Почему при выполнении функции в потоке возникает ошибка AccessViolation. Функция работает с публичными данными обьявленными в главной форме. Да, и если нетрудно обьясните как с Synchronize работать.
Заранее спсибо...
Из документации:
When you use objects from the VCL object hierarchy, their properties and methods are not guaranteed to be thread-safe. That is, accessing properties or executing methods may perform some actions that use memory which is not protected from the actions of other threads. Because of this, a main VCL thread is set aside for access of VCL objects.
Короче, обращаться к св-вам и методам объектов VCL нужно обязательно через Syncronize. Подробнее см. Help.