首页   |   IT资讯   |   综合资讯   |   开发   |   软件   |   问答   |   网络技术   |   网络综合
更多:
当前位置:首页 » 手机数码
文章正文

〖关于线程创建的窗体释放资源,先放100分相信BCB还是有高手+好人〗

类型:转载   责任编辑:asp   日期:2007/03/01

    

我在住进程中有时间控件循环创建线程,每次要创建好多个,都是做一样的事情.  
  线程中需要new一个窗体,现在调试感觉好象是窗体没能释放资源.  
   
  我应用运行1小时就死了.cpu利用达到100%,就象进了死循环!  
   
  我在线程中delete   form是不能用的!提示非法操作!  
  求各位大哥帮忙!

推荐阅读

  • 经典热销 三款3500元级悍将彩激导购 [详细内容]
  • “苏丹红一号”事件折射食品业供应链风险 [详细内容]
  • 去掉电量不足的提示音 [详细内容]
  • 9月最受关注的十款8MS响应时间液晶显示器 [详细内容]
  • 保持通畅的信息渠道 用供应链打造价值优势 [详细内容]
  • 给你logo图和更改logo方法 [详细内容]
  • IRIVER新款T20发布 有模仿嫌疑 [详细内容]
  • 网友回答:
    网友:invalid)

    窗体执行完任务后自己close,在onclose中设置action   =   cafree;

    网友:peiweiwei

    freeonterminate   =   true   干吗屏蔽了呀,  
      把这句恢复了试试

    网友:behard

    freeonterminate   =   true   这句感觉用不用没啥意义啊!!  
      表示的是线程退出时自动销毁

    网友:invalid)

    你怎么知道有100k的内存泄漏?看任务管理器的吗?那个不准确的.

    网友:matq2008

    任务管理器?你得用专门的分析工具,才能知道!  
      建议sleep时间长一点

    网友:peiweiwei

    freeonterminate   =   true   不是没啥意义,而是,我现在注释这句程序还能正常运行!  
      如果不注释,线程创建的时候马上报系统错误了!  
      估计线程还没完全释放你就创建了  
      你创建是应该先判断一下  
      用waitforsingleobject等到线程退出再创建  
     

    网友:mozart2000

    发送一个wm_close给窗体的handle不就解决了吗?  
       
      当然   窗体是   cafree   的   (在关闭时释放内存)  
       
     

    网友:yesry

    我看到的代码中只有一句  
      form2   =   new   tform2  
      并且不是在循环中,是不是form2只有一个实例?  
       
      action=cafree;和delete   form2;只取其一。  
      或  
      void   __fastcall   tform2::formclose(tobject   *sender,   tcloseaction   &action)  
      {  
                      adoquery2->close();  
                      clientsocket1->close();  
                      action=cafree;                              
                      form2=nuill;  
      }  
      顺便跟踪一下  
      __fastcall   kzthread::~kzthread()  
      {  
                      delete   form2;  
      }  
      如果没有执行,你可以:  
      void   __fastcall   kzthread::execute()  
      {  
                      //----   place   thread   code   here   ----  
          while(!terminated){  
                      isexit   =   false;  
                      i=0;  
                      while   (i<30000)  
                      {  
                                      if   (isexit)  
                                                      break;  
                                      sleep(1);  
                                      i++;  
                      }  
                      str   =   ip   +   "   sendend";  
                      synchronize(updatecaption);  
          }  
          delete   form2;form2=null;  
      }  
       
     

    .
      最佳浏览:1024X768 MSIE
    ©2007 jqmk.com.cn All Rights Reserved