IgorPI
@IgorPI

Delphi создание экземпляра класса в потоке?

Сложно правильно сформулировать вопрос, но я постараюсь.

У меня есть достаточно представление как всё устроено.
Работаю с потоками, управляю.
Синхронизация.
Проблемы.
И прочие ошибки при многопоточном проектировании.

Этот вопрос может показаться глупым, потенциальная ошибка может испортить жизнь, а далее суицид.

Приведу пример кода

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();

Где теперь храниться это экземпляр, в контексте потока или в стеке/куче основного потока?
Я правильно создаю экземпляр для потока?
  • Вопрос задан
  • 185 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы