我做的软件需要调用网络数据,但是放到哪个事件中好呢?现在是放到FormCreate中,但是打开的时候时间太长了,,求解。

解决方案 »

  1.   

    不想用多线程就用进度条,现在很多软件不是起来的时候在splash的地方有进度显示么
      

  2.   


    我就是这样子的,等窗体出来后,启动timer来获取网络数据。同时,将一些按钮失效。
      

  3.   

    可否在数据模块中

      Application.Initialize;
      MainForm:=TMainForm.Create(Application);
      MainForm.show;
      MainForm.update;
      Application.CreateForm(TDM, DM);  //代码放在这里
      Application.Run
      

  4.   

    1. 最好不要在FormCreate放调用网络数据(除非数据量小),可以放在FormShow中
    2. 放在线程里也可以
    3. 网络数据是数据量大还是获取数据的速度慢,数据量大,那可以想办法少加载点数据;获取数据的速度慢,可以改造一下获取数据的SQL或将获取数据放到存储过程中
    4. 如果数据不是频繁更新,可以将第一次获取的数据写格式文件到本地,窗口启动后先从网络上获取一下数据是否发生变化的信息,没有发生变化,直接从本地加载。
    5. 数据是字典类或设置类的数据,那么可以单独写一个数据缓存类,窗口向数据缓存类请求数据,由数据缓存类与数据库定时/不定时同步。