在线程中建立Form遇到的问题

一个项目由很多Form组成,默认情况下在启动程序时,这些form都会被建立,这会黑屏很长时间,一种方法是用到Form时再建立,结果又发现如果Form设计复杂,建立的过程也会超过1秒以上,于是想到用线程实现。

在主窗口的oncreate事件中实现:
TThread.CreateAnonymousThread(
procedure()
begin
form1:=TForm1.Create(Application);
end).Start;
win32下正常,android下不正常,有时候能正常显示主窗口,有时候黑屏卡死,不显示主窗口。

环境:xe6,xe7

窗口是属于线程的,消息循环也是依附于线程的.除非你的线程中有消息循环的处理.
不论Windows的MessageLoop还是Android的主线程的Handler/Message都是基于消息的.界面和线程都要分开处理的.

Google Android官方已经明白说过,
Android UI 并不是线程安全的,
所有UI的操作,都必须在 主UI线程中进行,
不能用在Windows编程的观念,
拿来套用在Android编程上~

TThread.CreateAnonymousThread(
procedure()
begin

sleep(1000);//加上这句就稳定下来了!

form1:=TForm1.Create(Application);
end).Start;


楼上试试
TThread.CreateAnonymousThread(
procedure()
begin

sleep(0);//加上这句看看效果是不是一样?

form1:=TForm1.Create(Application);
end).Start;
--------------------------


http://bbs.2ccc.com/topic.asp?topicid=465042

原文地址:https://www.cnblogs.com/findumars/p/5691890.html