zoukankan      html  css  js  c++  java
  • 在线程中建立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

  • 相关阅读:
    感知机学习笔记
    NOIP 模拟19
    NOIP 模拟17
    NOIP模拟14-16
    「动态规划」-数位dp专题
    8.5 NOIP 模拟测试 13
    8.3 NOIP 模拟12题解
    8.3 NOIP CE反思
    「分治」-cdq分治
    8.1 NOIP模拟11
  • 原文地址:https://www.cnblogs.com/findumars/p/5691890.html
Copyright © 2011-2022 走看看