我原来做了一个exe程序,使用多线程获取XML文件,然后同步更新主线程treeview,使用Synchronize进行同步。但是现在要把这个主窗体放在DLL中,我在DLL中创建这个主窗体的时候,把主应用的Application传进来,在推出的时候再恢复。但是问题是,这个多线程在DLL中就不执行了,不知道为什么?难道在DLL中就不能使用多线程,同步DLL窗体中的treeview了?我主程序使用的是动态创建DLL中的窗体,倒是还有一个问题,就是FreeLibery的时候,报地址错误,不释放程序关闭倒是不出错,但是不知道是否会出现内存泄露?

解决方案 »

  1.   

    主要是DLL中使用多线程来对DLL中的窗体的ImageList控件和Treeview来更新,肯定要使用同步,但是使用Synchronize不执行,调试就向死机一样
      

  2.   

    自己搞定了先,不能使用Synchronize,因为DLL不是主线程,我是用临界区实现的。上个帖子我没找到答案,大家去看看那个帖子,这两个帖子的分数都算在那个里面,地址:http://topic.csdn.net/u/20071022/22/976a3aa5-4762-4e5a-af22-472ce9242b28.html
      

  3.   

    方法比较多用临界区也行现在的双核cpu上跑的程序在多线程时都要注意一下这个问题
      

  4.   

    通过测试DLL Form发现一下问题:
    1,焦点在DLL Form上,切换程序,再切换回来,但是程序无法提前显示,但是感觉焦点已经在主程序上了?
    2,焦点在DLL Form上,按Alt+Tab键,主程序的图标不显示在列表中,无法用之切换程序?
    3,Dll Form上的所有控件的Hint都不显示了?
    4,Dll Form使用SpeedButton控件,经常鼠标移开控件后,控件的状态不自动改为Flat状态?
    还有一个是焦点在DLL Form时,主程序的标题栏和菜单变灰,不过这个问题我通过消息解决了。以上四个问题如何解决?或者有相关的代码或建议都有分???