Changeset 5 for trunk/UDriveScan.pas


Ignore:
Timestamp:
Mar 29, 2016, 11:01:28 PM (8 years ago)
Author:
chronos
Message:
  • Modified: TScanThread is now internal part of TDriveScan class.
  • Fixed: Now scan can be stopped and rerun again in runtime.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UDriveScan.pas

    r3 r5  
    99
    1010type
     11  TDriveScan = class;
     12
    1113  TRunMode = (rmRead, rmWrite);
     14
     15  { TScanThread }
     16
     17  TScanThread = class(TThread)
     18    Scan: TDriveScan;
     19    procedure Execute; override;
     20  end;
    1221
    1322  { TDriveScan }
     
    1726    FOnChange: TNotifyEvent;
    1827    FOnTerminate: TNotifyEvent;
     28    ScanThread: TScanThread;
    1929    procedure DoChange;
    2030    procedure DoTerminate;
     31    procedure Run;
    2132  public
    2233    Lock: TCriticalSection;
     
    3243    WritePattern: Byte;
    3344    function GetElapsedTime: TDateTime;
    34     procedure Run;
     45    procedure Start;
     46    procedure Stop;
    3547    constructor Create;
    3648    destructor Destroy; override;
     
    3951  end;
    4052
    41   { TScanThread }
    42 
    43   TScanThread = class(TThread)
    44     Form: TForm;
    45     procedure Execute; override;
    46   end;
    47 
    4853
    4954implementation
    5055
    51 uses
    52   UFormMain;
    5356
    5457{ TScanThread }
     
    5659procedure TScanThread.Execute;
    5760begin
    58   TFormMain(Form).DriveScan.Run;
     61  Scan.Run;
    5962end;
    6063
     
    7578  if TimeEnd <> 0 then Result := TimeEnd - TimeStart
    7679    else Result := Now - TimeStart;
     80end;
     81
     82procedure TDriveScan.Start;
     83begin
     84  ScanThread := TScanThread.Create(True);
     85  ScanThread.Scan := Self;
     86  ScanThread.Start;
    7787end;
    7888
     
    132142end;
    133143
     144procedure TDriveScan.Stop;
     145begin
     146  Terminated := True;
     147  ScanThread.Terminate;
     148  ScanThread.WaitFor;
     149  FreeAndNil(ScanThread);
     150end;
     151
    134152constructor TDriveScan.Create;
    135153begin
Note: See TracChangeset for help on using the changeset viewer.