HandledThread.pas
上传用户:wanyu_2000
上传日期:2021-02-21
资源大小:527k
文件大小:1k
源码类别:

DVD

开发平台:

Delphi

  1. {-----------------------------------------------------------------------------
  2.  Unit Name: HandledThread
  3.  Author:    Paul Fisher / Andrew Semack
  4.  Purpose:   Base class for the Burn and erase threads
  5.  History:
  6. -----------------------------------------------------------------------------}
  7. unit HandledThread;
  8. interface
  9. uses
  10.   Windows, Classes, SysUtils, Forms, Messages;
  11. type
  12.   THandledThread = class(TThread)
  13.   private
  14.     FException: Exception;
  15.     procedure DoHandleException;
  16.   protected
  17.     procedure HandleException; virtual;
  18.   public
  19.   end;
  20. implementation
  21. { THandledThread }
  22. procedure THandledThread.DoHandleException;
  23. begin
  24.   if GetCapture <> 0 then
  25.     SendMessage(GetCapture, WM_CANCELMODE, 0, 0);
  26.   if FException is Exception then
  27.     Application.ShowException(FException)
  28.   else
  29.     SysUtils.ShowException(FException, nil);
  30. end;
  31. procedure THandledThread.HandleException;
  32. begin
  33.   FException := Exception(ExceptObject);
  34.   try
  35.     if not (FException is EAbort) then
  36.       Synchronize(DoHandleException);
  37.   finally
  38.     FException := nil;
  39.   end;
  40. end;
  41. end.