CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  基础类

怎么程序执行大量计算的同时显示进程?

楼主sheyu8(sheyu8)2003-12-04 10:59:53 在 C++ Builder / 基础类 提问

怎么显示程序执行进程?  
  想法是用户在主界面点一个按钮后,程序进行大量计算,同时用showmodal()弹出一个form窗体,这个窗体的edit控件不断显示程序执行到哪个阶段,程序执行结束后新的对话矿自动消失! 问题点数:20、回复次数:8Top

1 楼lluunn007(书生)回复于 2003-12-04 11:17:06 得分 5

在大量计算的循环中加入响应外部消息的一句:  
  for   example:  
   
  for(;;;)  
  {  
          Application->ProcessMessages();//加上此句          
          .....  
  }  
   
  ===============  
  同步显示执行过程;  
  你自己在执行的过程动态修改该窗体的显示就行了。Top

2 楼ljianq(泉深水清)回复于 2003-12-04 11:21:41 得分 1

不能使用showmodal()方法;Top

3 楼jiangchun_xn(GrayMemory)(再回头·灯火依旧·人不见·潸然泪下)回复于 2003-12-04 11:39:14 得分 0

你必须把大量计算放到ShowModal的fOrm里面才行。  
   
  用线程把。Top

4 楼lluunn007(书生)回复于 2003-12-04 11:42:58 得分 1

显示进程状况的窗体也不能使用ShowModal()模式,最好还是Show()吧。Top

5 楼heng2003(哼哼)回复于 2003-12-04 12:14:34 得分 10

用线程吧  
  在显示执行进度的窗口生成的时候开启线程  
  线程的简单代码我写一点示范  
   
  mythread.cpp  
   
  //---------------------------------------------------------------------------  
   
  #include   <vcl.h>  
  #pragma   hdrstop  
   
  #include   "Unit3.h"  
  #include   "Unit2.h"  
  #pragma   package(smart_init)  
   
  //---------------------------------------------------------------------------  
   
  __fastcall   TMyThread::TMyThread(bool   CreateSuspended)  
          :   TThread(CreateSuspended)  
  {  
          FreeOnTerminate   =   true;  
          Count   =   0;  
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TMyThread::Execute()  
  {  
          //----   Place   thread   code   here   ----  
          while(!Terminated   &&   Count<100){  
                Synchronize(Loop);  
                Count++;  
                ::Sleep(100);  
          }  
          Synchronize(LoopEnd)   ;  
   
  }  
  //---------------------------------------------------------------------------  
  void   __fastcall   TMyThread::Loop()  
  {  
          if(Form2!=NULL){  
                Form2->ProgressBar1->StepIt();  
                Form2->Label1->Caption   =   Form2->ProgressBar1->Position;  
          }  
  }  
   
  void   __fastcall   TMyThread::LoopEnd()  
  {  
          if(Form2!=NULL){  
                Form2->Label1->Caption   =   "Thread   end.";  
          }  
  }  
   
   
  mythread.h  
   
  //---------------------------------------------------------------------------  
   
  #ifndef   Unit3H  
  #define   Unit3H  
  //---------------------------------------------------------------------------  
  #include   <Classes.hpp>  
  //---------------------------------------------------------------------------  
  class   TMyThread   :   public   TThread  
  {  
  private:  
  protected:  
          void   __fastcall   Execute();  
          void   __fastcall   Loop();  
          void   __fastcall   LoopEnd();  
          int   Count;  
  public:  
          __fastcall   TMyThread(bool   CreateSuspended);  
  };  
  //---------------------------------------------------------------------------  
  #endif  
   
  线程一启动,就每秒钟将Form2   的progressbar   Step   一下,label   也跟着变更  
  在线程计数count到100   后,线程终止,label   的caption   也改为"Thread   end."  
   
  这个只是一段很简单的代码  
  思路应该跟你的要求差不多,你看看自己在自己的代码中采用线程就可以了  
   
   
  Top

6 楼yangguo_god(狂学java....)回复于 2003-12-04 12:44:36 得分 1

Application->ProcessMessages();//响应消息,  
  最好用线程Top

7 楼yjy1001(蓝鲸--优秀得郁闷的鱼)回复于 2003-12-04 13:15:57 得分 1

Application->ProcessMessages();//加上此句          
  交出   CPU控制权   来让CPU响应其他显示语句的操作  
  Top

8 楼yhz(耗子)回复于 2003-12-04 19:07:03 得分 1

在子线程中处理计算任务。  
  这样主线程可以显示进度条,也可以相应其它的操作。  
  这是最合适的解决方法。Top

相关问题

  • 进程PID与可执行程序
  • 高手请进,程序执行过程没有问题,但。。。。。。
  • 进程运行程序不能再执行
  • 怎么计算PHP程序执行的时间?
  • 怎样计算一段程序的执行时间?
  • 怎么编一个程序?可以计算别的程序执行的效率?
  • 如何在程序中启动一个进程执行system命令
  • web程序调用Process.Start执行系统进程,无效?(up有份)
  • 如何得到一个进程的创建进程的可执行程序路径
  • 我想在计算机关闭时执行一个程序,怎么办?

关键词

  • 线程
  • 执行
  • 代码
  • application
  • tmythread
  • 窗体
  • 计算
  • fastcall
  • 显示
  • 程序

得分解答快速导航

  • 帖主:sheyu8
  • lluunn007
  • ljianq
  • lluunn007
  • heng2003
  • yangguo_god
  • yjy1001
  • yhz

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo