-1
TThread.ShowMessage를 사용하여 Tmemo에 문자열을 추가하는 데 문제가 있습니다.이 문자열을 표시 할 수 있습니다.이 응용 프로그램은 Tmemo에 문자열을 추가하는 것에 대해 오류를주지는 않지만 그럴 수는 없습니다. TMemo에 추가되었습니다. 내 코드는 다음과 같습니다.Delphi XE6에서 TThread를 사용하여 TMemo를 편집 할 수 없습니다.
procedure TThreadGet.Execute;
var
Filed:TStringList;
begin
Filed:=TStringList.Create;
Filed.LoadFromFile(Username1+'.dat');
Messaged:=Touser+':'+Filed.Text;
Form2.Memo1.Lines.Add(Messaged);//Doesn't give error.But Doesn't Add String.
Showmessage(Messaged);//Shows String Right.
end;
Filed.Free;
Terminate;
end;
스레드 단위의 맨 위를보십시오. IDE의 삽입 된 경고는 앱 메인 화면을 제외한 모든 스레드에서 VCL 구성 요소에 액세스/업데이트 할 수 없다는 것을 알 수 있으며 대신 동기화를 사용합니다. – MartynA
하지만 레이블 등의 스레드를 사용하여 구성 요소를 편집 할 수 있습니다. – Srs
아니요, 이제 방금 행운이었습니다. 그것에 대해 내 말을 듣지 마십시오. 경고를 보지 못하거나 무시하고 문제가 생기는 사람들로부터 수십 가지 질문이 있습니다. 비록 당신이 이것을 알고있을지라도 당신은 여전히 문제를 겪을 수 있습니다. http://tackoverflow.com/questions/17705197/thread-safe-in-delphi btw에는 대답의 링크가 꽤 있습니다. – MartynA