为什么多线程退出时提示异常类EOSError

为什么多线程退出时提示错误类EOSError
错误类EOSError,错误信息:'System Error Code:1400 无效的窗口句柄' 

多线程更新主窗体的caption,点停止线程后,退出提示上面的错误

线程开始
procedure TForm1.Button1Click(Sender: TObject);
begin
myThread:=TMyThread.Create(true);
myThread.Resume;
end;


线程停止
procedure TForm1.Button2Click(Sender: TObject);
begin
myThread.Terminate; 
end;



unit uMyThread;

interface

uses
  Classes,Windows,SysUtils;

type
  TMyThread = class(TThread)
  private
  protected
  procedure Execute; override;
  end;

implementation

uses Unit1; 

procedure TMyThread.Execute;
var
  i:Integer;
begin

Form1.PageControl1.ActivePageIndex:=1;
 for i:=1 to 10000 do
begin
if Terminated then Break;
Sleep(50);
Form1.Caption:=inttostr(i);
end;


end;

end.


为什么呢?

------解决方案--------------------
Form1.PageControl1.ActivePageIndex:=1;
改成用同步方法

private
procedure xx();
...

procedure TMyThread.xx();
begin
Form1.PageControl1.ActivePageIndex:=1;
end;

procedure TMyThread.Execute;
var
i:Integer;
begin
synchronize(xx);
for i:=1 to 10000 do
...
------解决方案--------------------
改成发送消息吧 发给给窗口或线程 不用同步函数
如果需要传递内存地址 协商好由谁释放就可
------解决方案--------------------
将与UI有关的操作放在一个过程中,最后synchronize一次即可