Обмен данными из главного окна (VCL) c потоком (TThread)
В моей программе я запускаю поток, в алгоритме потока в нескольких местах (не в одном, как в классическом примере) мне нужно получить доступ к элементам VCL: инкремент ProgressBar, вывести в Edit поле имя очередного файла и т.п.
подскажите пожалуйста как это сделать?
Как я понял Synchronize позволяет это сделать, но только в одном месте алгоритма...
Могу ли я из главного потока (главного окна) периодически считывать данные из pablic полей запущенного потока?
"Synchronize позволяет это сделать" сколько угодно раз из каких угодно мест. Кроме того, он позволяет делать что угодно. При вызове Synchronize выполнение потока приостанавливается, а метод, переданный в качестве параметра, выполняется из основного потока приложения, в то время, как он сможет этот метод выполнить.
А когда "он сможет этот метод выполнить"? Когда не может? Пожалуйста напишите подробнее.
Цитата:
Originally posted by NightSleeper
А когда "он сможет этот метод выполнить"? Когда не может? Пожалуйста напишите подробнее.
А когда "он сможет этот метод выполнить"? Когда не может? Пожалуйста напишите подробнее.
Сможет тогда, когда ничем другим не будет занят, т.е. примерно в 90% всего времени работы :)