Показать сообщение отдельно
  #1  
Старый 20.09.2012, 08:45
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию Публичные свойства у потоков

Допустим есть некий поток:
Код:
unit MVCThread;

interface

uses
  Classes;

type
  TMVCCreateStruct = record
    port:string;
    baudrate:Integer;

  end;
  TMVCThread = class(TThread)
  private
    FSomeProp: Boolean;
    procedure SyncProc;
  protected
    procedure Execute; override;
  public
    property SomeProp:Boolean read FSomeProp write FSomeProp;
  end;

implementation

{ 
  Important: Methods and properties of objects in visual components can only be
  used in a method called using Synchronize, for example,

      Synchronize(UpdateCaption);  

  and UpdateCaption could look like,

    procedure TMVCThread.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; 
    
    or 
    
    Synchronize( 
      procedure 
      begin
        Form1.Caption := 'Updated in thread via an anonymous method' 
      end
      )
    );
    
  where an anonymous method is passed.

  Similarly, the developer can call the Queue method with similar parameters as
  above, instead passing another TThread class as the first parameter, putting
  the calling thread in a queue with the other thread.

}

{ TMVCThread }

procedure TMVCThread.Execute;
begin
  { Place thread code here }
  while not Terminated do
    begin
      Sleep(100);
      if FSomeProp then
        Synchronize(SyncProc);
    end;
end;

procedure TMVCThread.SyncProc;
begin
  //код
end;

end.
Свойство SomeProp буду устанавливать из основного потока приложения. Вопрос: насколько это безопасно, и правильно ли вообще так писать?
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием