안녕하세요..델초보입니다. 다름이 아니오라 ActiveX 에서 Thread 적용에 대한 질문을 드리고자합니다.
procedure TMyThread.View;
var
i, j : Integer;
begin
j := 0;
for i := 1 to 1000 do
begin
Inc(j);
test.Memo1.Lines.Add(IntToStr(j));
end;
end;
procedure TMyThread.Execute;
begin
Synchronize(view);
end;
procedure Ttest.Button1Click(Sender: TObject);
var
MyThread : TMyThread;
begin
Memo1.Lines.Add('Memo Reay');
MyThread := TMyThread.Create(False);
Memo1.Lines.Add('Thread Create');
MyThread.Priority := tpHigher;
end;
위 소스는 ActiveX 폼에서 숫자를 증가 시키는 것인데 쓰레드를 테스트 하던중 일반
어플리케이션에서는 작동이 잘되었습니다..
허나 이걸 ActiveX에서 작동을 시키기 반응이 없습니다.
질답란이나강좌란을 찾아봐도 ActiveX에서 쓰레드가 안된다는 질문만 있고 명백히 해결할 수 있는 방안에 대한 해결책을 못찾았습니다.
고수님들의 넓은 마음으로 가르침을주시기 바랍니다.
저도 비슷한 문제로 고민을 하다가 결국은 꽁수로 PostMessage로 대신 처리하도록 해서 해결했던 기억이 납니다.
정확하게 원인이 무엇인지는 잘 모르겠지만, Synchronize를 사용하지 않는 스레드는 별 이상없이 동작했던것 같습니다. Synchronize 매커니즘상 ActiveForm과 충돌나는 부분이 있지 않을까하는 추측을...
아무튼, 즐프~