В единице DeviceManager
у меня есть форма VCL formDeviceManager
, которая взаимодействует с данными из других TThread
, DetectDrivesThread
. DetectDrivesThread
создается и выполняется в основной форме программы.
procedure TDetectDrivesThread.Execute;
begin
while not Terminated do
begin
sleep(1000);
try
DetectDrives.refreshRemovableDrivesList(formMain.dbConn);
finally
end;
end;
end;
Это конструктор для TDetectDrivesThread:
constructor TDetectDrivesThread.Create();
begin
inherited Create(false);
DetectDrives := TDetectDrives.Create(formMain.dbConn);
FreeOnTerminate := false;
end;
formDeviceManager
имеет несколько элементов управления, которые позволяют пользователю просматривать, удалять и изменять данные о таких дисках. Однако мои элементы управления не являются поточно-ориентированными, и во время выполнения DetectDrivesThread
я мог бы использовать кнопку «Удалить устройство» в formDeviceManager
, чтобы освободить объект, соответствующий USB-устройству. Это может привести к тому, что программа обработает sh, если запущены какие-либо методы из этого объекта.