Сложно правильно сформулировать вопрос, но я постараюсь.
У меня есть достаточно представление как всё устроено.
Работаю с потоками, управляю.
Синхронизация.
Проблемы.
И прочие ошибки при многопоточном проектировании.
Этот вопрос может показаться глупым, потенциальная ошибка может испортить жизнь, а далее суицид.
Приведу пример кода
threadCard := TCardThread.CreateAnonymousThread(
procedure
var
this: TCardThread;
begin
this := TThread.CurrentThread as TCardThread;
FDQueryUrl := Dm.GetQuery();
...
end;
function TDm.GetQuery: TFDQuery;
begin
Result := TFDQuery.Create(nil);
Result.Connection := TFDConnection.Create(nil);
Result.Connection.Params.Assign(FDConnection.Params);
end;
Последовательно создаю потоки, они работают вроде как корректно.
Но иногда происходит аномалия, порой сложно сразу определить, что вызывает ошибку.
И я вроде как по устранял явные, грубые, ошибки при использовании потоков.
Обратите внимание на строку
FDQueryUrl := Dm.GetQuery();
Где теперь храниться это экземпляр, в контексте потока или в стеке/куче основного потока?
Я правильно создаю экземпляр для потока?