还有,Delphi中哪些类是像java中:ArrayList、LinkedList HashMap、这类容器的?是不是要自己动手去实现

解决方案 »

  1.   

    你自己把线程弄死锁了,跟用啥概念都没啥直接关系吧。为啥没有响应得看你的代码才知道。
    应该总是假定线程是不安全的。至于那些容器,delphi都有inifile 单元里有 tstringhash、thashedstringList
    contnrs 单元里全都是,自己挨个看上d2009+版本,泛型容器更是多,映射表、字典啥的应有尽有
      

  2.   

    恩好的。
    以前用Delphi,公司完全是让对着抄抄改改能用就行,结果做出来就会界面卡死。从组件事件一行行代码看也没看到有“Thread”字样出现,应该就是把任务放进UI线程里导致的吧,Delphi我不知道java里我知道是这样的。
    之前工作用的7,现在想自己学了弄个2009吧
      

  3.   

    涉及ui的地方都自己进行同步,用临界区、互斥体、信号啥的都随便
    ttread 类的话里面也提供了用于同步的synchronize函数,
    绘图的canvas类也有lock、unlock等用来同步的函数如果线程是用api createthread创建的,要把全局变量 ismultithread 设为true,
    或者接用 beginthread来替代,参数完全跟createthread一样,其内部已经自动ismultithread:=true最好的是用 tthread 类
      

  4.   

    delphi 的效率应该不低了,如果要访问网络资源,就不要在主线程中处理。
    如果是刷新的数据量太大,需要考虑不要让界面不断刷新,可以用如下代码暂停和恢复刷新:
        ListView1.Items.BeginUpdate;
        listview1.Items.EndUpdate;