• 在线程中建立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

  • 相关阅读:
    CentOS75 安装 telnet 进行使用.
    Windows 创建计划任务 实现自动同步文件.
    qemu-img.exe 工具 简介
    中建项目环境迁移说明
    服务器内存最大大小限制
    bzip2 以及 tar 压缩/解压缩/.打包等工具软件
    Ubuntu18.04 安装后的简单实用设置[未完成]
    oracle 启动监听报错TNS-12547: TNS:lost contact
    Linux审计sudo
    OPENVAS运行
  • 原文地址:https://www.cnblogs.com/findumars/p/5691890.html
Copyright © 2020-2023  润新知