TSMH’s blog

多趣味人間のメモ

<TThreadedQueue>サンプルソース

TThreadedQueueの使い方について
参考としてメモしたいから
めっちゃわかりやすく組んでみました

ユニットファイル

uses
    System.Generics.Collections ;

宣言

public
    received_queue: TThreadedQueue<string>;

Create

received_queue := TThreadedQueue<string>.Create(1000, 100, 100);

Push(受け取る)

ボタンでデータを送信
ここは分かりやすく作りたいためボタンを使用していますが
一般的な?使い方は外部からデータを受け取る方がよく使われると思います
例えばComからデータを受け取るとか

procedure TForm1.Button1Click(Sender: TObject);
var
  dt:TDateTime;
  str:string;
begin
  dt:=Now;
  DateTimeToString(str, 'yyyy-MM-dd HH-mm-ss',dt);

  received_queue.PushItem(str);
end;

Pop(取り出す)

procedure TForm1.Timer1Timer(Sender: TObject);
var
  str : String;
begin
  while received_queue.PopItem(str) = wrSignaled do
  begin
    (処理)
    Memo1.Lines.Add(str);
  end;
end;

終了処理

received_queue.DoShutDown; //シャットダウン
while not received_queue.ShutDown do;//シャットダウン待ち
received_queue.Free;//解放