相关疑难解决方法(0)

在Delphi中检测磁盘活动

我正在使用Delphi 2007.

我正在将文件复制到远程驱动器.复制结束时,我关机/待机.可能会发生某些文件无法从缓冲区复制到磁盘,并且远程磁盘断开连接,因此备份未完成.我需要检测该磁盘上的磁盘活动,以便能够在计算机上执行关闭操作.

有没有办法在这种情况下检测磁盘活动?

delphi disk delphi-2007 activity-monitor

6
推荐指数
2
解决办法
5577
查看次数

Delphi线程 - 等待时冻结

我正在编写一个需要等到文件存在于目录中的应用程序.我尝试了多种方法,唯一有效的解决方案是使用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;
Run Code Online (Sandbox Code Playgroud)

此方法有效,但我无法在等待时关闭应用程序.此外,使用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 …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading

3
推荐指数
1
解决办法
766
查看次数