Я хотел бы задать несколько вопросов, позвольте мне сначала объяснить вам, и вы можете увидеть вопросы под этим постом. Я создал многопоточное приложение, которое считывает и обновляет данные из базы данных. Потоки взаимодействуют с основным потоком, используя sendmessage. Я передаю указатель TRecord на sendmessage и размещаю указатель в основном потоке. Ниже приведены фрагменты кода, демонстрирующие структуру процесса:
const WM_MY_MESSAGE = WM_USER + 0;
PTestPointerRecord : ^TTestPointerRecord;
TTestPointerRecord = record
i : integer;
end;
Вот событие выполнения расширенного класса TThread. Он будет работать непрерывно, пока поток не будет приостановлен или остановлен.
procedure TSampleThreadClass.Execute;
var
TestPointerRecord : PTestPointerRecord;
FConnection : TConnectionObject;
FQuery : TQueryObject;
begin
while not Terminated do
begin
New(PTestPointerRecord);
FConnection := TConnectionObject.Create(nil);
FQuery := TQueryObject.Create(nil);
try
FConnection.connectionstring := 'path';
FConnection.loginPrompt := False;
FConnection.open;
FQuery.connection := FConnection;
FQuery.close;
FQuery.sql.clear;
FQuery.sql.add('select column1, column2 from table');
FQuery.open;
PTestPointerRecord.i := 0;
SendMessage(frmMain.handle, WM_MY_MESSAGE, 0, integer(PTestPointerRecord));
finally
FQuery.close;
FConnection.disconnect;
FreeAndNil(FQuery);
FreeAndNil(FConnection);
sleep(250);
end;
end;
end;
Вот событие, которое получает сообщение из потока.
procedure TfrmMain.message(msg : TMessage);
var
TestPointerRecord : PTestPointerRecord;
begin
TestPointerRecord := PTestPointerRecord(msg.lParam);
try
edit1.Text := inttostr(TestPointerRecord.i);
finally
Dispose(TestPointerRecord);
end;
end;
Приложение будет использоваться как приложение типа службы, которое будет работать непрерывно все время.
Вопросы:
1. Правильно ли я располагаю указатель?
2. Когда я проверил свой диспетчер задач во время работы приложения, я заметил, что на вкладке «Процессы» я заметил, что память (частный рабочий набор) постоянно увеличивается. Это нормально?
С уважением ко всем