Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Finalize Thread Pool

In some programming environments, such as VB6, FoxPro, and others (especially anything using the Chilkat ActiveX), it may be necessary to call FinalizeThreadPool just before your program exits. Otherwise a hard crash can happen. (This has only been known to happen in programs written in VB6, FoxPro, etc.)

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Global;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  glob: TGlobal;

begin
  success := False;

  //  If your application made use of asynchronous Chilkat methods, which create background threads including a thread pool manager, 
  //  then call FinalizeThreadPool just before your program exits.  This isn't required, but in some programming environments it 
  //  prevents a crash on exit -- namely VB6, FoxPro, and other older programming languages where the ActiveX is used.
  glob := TGlobal.Create;
  success := glob.FinalizeThreadPool();


  glob.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.