我正在使用Delphi 2007.
我正在将文件复制到远程驱动器.复制结束时,我关机/待机.可能会发生某些文件无法从缓冲区复制到磁盘,并且远程磁盘断开连接,因此备份未完成.我需要检测该磁盘上的磁盘活动,以便能够在计算机上执行关闭操作.
有没有办法在这种情况下检测磁盘活动?
我正在编写一个需要等到文件存在于目录中的应用程序.我尝试了多种方法,唯一有效的解决方案是使用Sleep/Application.ProcessMessages.
这是我尝试过的:
使用Sleep/Application.ProcessMessages:
Result := False;
for i := 0 to iTimeout do
begin
  if FileExists(fileName) do
  begin
    updateStatus('Conversion Completed');
    Result := True;
    Break;
  end;
  updateStatus(Format('Checking for file: %d Seconds', [i]));
  Application.ProcessMessages;
  Sleep(1000);
end;
此方法有效,但我无法在等待时关闭应用程序.此外,使用Sleep/Application.ProcessMessages还有很好的文档记录问题,我宁愿避免.
使用TThread/TEvent:
type
  TMyThread = class(TThread)
  private
    FEventDone: TEvent;
  public
    constructor Create(CreateSuspended: boolean);
    destructor Destroy;
    procedure Execute; override;
    property EventDone: TEvent read FEventDone;
  end;
  TformThreading = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    waitThread: TMyThread;
    { Private declarations }
  public …