Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Delphi] Comunicazione tra from ed un thread

    Non riesco a comunicare con un thread da un form. Ottengo continuamente un errore in esecuzuione. Posto il codice:

    Thread:
    codice:
    procedure TServerThread.Send();
    begin
      try
        TMLog.Lines.Append('Ciao dal thread');
        Except on e: Exception do begin
          //TMLog.Lines.Append(IntToStr(count)+ ' '+ e.Message);
        end;
      end;
    end;
    MainForm:
    codice:
        TServerThread(Clients[I]).Send;
    Al thread viene passato un riferimento all'oggetto TMemo, in avvio il thread stampa correttamente sul TMemo 'Thread partito' il che significa che il riferimento al TMemo viene passato correttamente.
    Quando clicco sul pulsante che esegue la funzione Send() ottengo un errore alla riga
    codice:
        TMLog.Lines.Append('Ciao dal thread');
    sapete dirmi perché?
    TMLog.Lines.Append('Ciao dal thread');
    Vi ringrazio, Denis.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    La libreria VCL non è multithreading: ciò significa che è priva di elementi di sincronizzazione che possano garantire l'accesso ai medesimi oggetti da parte di più thread, quindi non puoi utilizzare direttamente membri di un oggetto che viene gestito anche dal thread primario dell'applicazione.

    Devi introdurre l'uso di Critical Section, Mutex e affini, oppure avvalerti del metodo Synchronize, fornito dalla classe base TThread (che consente di eseguire un metodo nel contesto del thread primario dell'applicazione, quindi in modo "sincrono").

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.