그래서, 내 목표는 다른 스레드에서 함수를 시작합니다. 또한 새 스레드에서 다른 vcl 구성 요소에 액세스해야합니다. 여기에 지금까지 내 코드입니다 :스레드의 vcl 구성 요소에 대한 액세스! 델파이
procedure TForm1.StartButtonClick(Sender: TObject);
var
thread1: integer;
id1: longword;
begin
thread1 := beginthread(nil,0,Addr(Tform1.fetchingdata),nil,0,id1);
closehandle(thread1);
end;
procedure TForm1.FetchingData;
var
...
begin
Idhttp1.IOHandler := IdSSLIOHandlerSocketOpenSSL1; //<- error
idhttp1.Request.ContentType := 'application/x-www-form-urlencoded';
내 프로그램의 중지와 나는 오류 얻을 : 00154E53에서 모듈있는 My.exe에서 예외 EAccessViolation을. 모듈 'my.exe'의 주소 00554E53에서 액세스 위반. 주소 00000398을 읽으십시오.
미리 감사드립니다.
이는 WM_USER 메시지와 그들에게 응답 메인 스레드를 게시 보조 스레드입니다 달성 할 수있는 쉬운 방법을 다음과 같이
는 새로운 스레드가 완료 호출. 그러나 귀하의 경우에는 indy TidAntiFreeze 객체를 사용하여 동일한 효과를 얻을 수 있습니다. 이'http : // stackoverflow.com/questions/37185/whats-the-idiomatic-way-to-do-async-socket-in-delphi'을 읽으십시오. –