[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'Forms' (#lcl)

# TApplication.QueueAsyncCall

Inserts an asynchronous call into the queue.

## Declaration

Source position: forms.pp line 1608

`public procedure TApplication.QueueAsyncCall(`
`const AMethod: TDataEvent;`
`Data: PtrInt`
`);`

## Arguments

`AMethod` |  | The method to call asynchronously.
`Data` |  | The argument passed to the method.

## Description

This is thread safe.

## Errors

Exceptions on various inconsistencies of the queue.

## Example

    unit TestQueueAsyncCall;

    {$mode objfpc}{$H+}

    interface

    uses
      Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
      StdCtrls;

    type

      { TQueueAsyncCallForm }

      TQueueAsyncCallForm = class(TForm)
        CallButton: TButton;
        LogListBox: TListBox;
        procedure CallButtonClick(Sender: TObject);
      private
        { private declarations }
        FCounter: PtrInt;
        procedure Async(Data: PtrInt);
      public
        { public declarations }
      end;

    var
      QueueAsyncCallForm: TQueueAsyncCallForm;

    implementation

    { TQueueAsyncCallForm }

    procedure TQueueAsyncCallForm.CallButtonClick(Sender: TObject);
    begin
      LogListBox.Items.Add('Click 1');
      FCounter := FCounter+1;
      Application.QueueAsyncCall(@Async,FCounter);
      LogListBox.Items.Add('Click 2');
    end;

    procedure TQueueAsyncCallForm.Async(Data: PtrInt);
    begin
       LogListBox.Items.Add('Async '+ IntToStr(Data));
    end;

    {$R *.lfm}

    end.