Конференция "WinAPI" » запись из потока(BeginThread) в мемо
 
  • tippa (11.03.11 12:31) [0]
    Добрый день.
    Как правильно из потока, созданного через BeginThread записать строку в поле TMemo?
    Знаю, что писать через свойство lines неправильно.
    Также знаю, что для класса TThread для этого предназначен Synchronize.
    А как быть с апи потоками?
  • clickmaker © (11.03.11 12:32) [1]
    > как быть с апи потоками?

    а там обязательно нужен апи поток?
    можно через PostMessage форме, а в ее обработчике уже как обычно
  • QAZ (11.03.11 12:42) [2]

    > можно через PostMessage форме

    SendMessage
  • clickmaker © (11.03.11 12:50) [3]
    > SendMessage

    это будет то же самое, что прямой вызов метода формы
  • QAZ (11.03.11 14:07) [4]
    неа , это кокраз будет синхронизация по винапишному
    а пока до формы дойдет месадж от PostMessage буфер передаваемой строки уже сто раз изменится либо вообще может быть высвобожден
  • clickmaker © (11.03.11 14:11) [5]
    > неа , это кокраз будет синхронизация по винапишному

    это как?
  • QAZ (11.03.11 14:16) [6]
    Удалено модератором
  • clickmaker © (11.03.11 14:28) [7]
    > точно также работает Synchronize

    Synchronize работает не точно также
  • Вариант (11.03.11 14:47) [8]

    > clickmaker ©   (11.03.11 12:50) [3]
    > это будет то же самое, что прямой вызов метода формы


    Нет


    > clickmaker ©   (11.03.11 14:28) [7]

    До 5 дельфи включительно или точнее скажу так -  в 5 дельфи (я смотрел исходники)    Synchronize работал используя SendMessage.  С шестой уже Synchronize реализован по другому
  • QAZ (11.03.11 14:52) [9]

    > Synchronize работает не точно также

    рад что ты смотрел исходники :)
    только я имел ввиду не способ реализации а способ работы, а если нет разници то зачем платить больше
  • han_malign (11.03.11 14:59) [10]

    > Synchronize работает не точно также

    - начиная с D7 - я в свое время тоже удивился...

    А SendMessage один фиг будет...
    Что самое прикольное, все - кроме memo.Text и memo.Lines.Text(которые дергают Perform вместо SendMessage) - потокобезопасно, т.к. - через то самое место...
  • clickmaker © (11.03.11 15:26) [11]
    > Perform вместо SendMessage

    да, SendMessage поток переключит. Как-то вылетело из головы
 
Конференция "WinAPI" » запись из потока(BeginThread) в мемо
Есть новые Нет новых   [134431   +12][b:0][p:0]