我程序有一个过程是执行结账的步骤,由于要运算很多数值和读写数据库,所以在结账的时候,整个程序会假死掉,有没有办法不让程序死掉?听说可以使用多线程,具体应该怎么做呢?

解决方案 »

  1.   

    把与数据库操作的所有步骤封装在一个多线程的Execute方法中。主线程就可以做其他的事情了。
      

  2.   

    //大概写了个结构Type
      TJobThread = class(TThread)
        private
          FXXX:Widestring;//私有相关参数
        protected
         procedure TheHardWork(var FCurrentProgress:Integer);//费时的操作
          procedure Execute;override;
        public
          Constructor Create(CreateSuspended: Boolean {其它参数});
          Destructor  Destroy; override;      property XXX:Widestring Read FXXX Write FXXX;//相关属性,用于从主程序中传递
      end;
    implementationconstructor TJobThread .Create(CreateSuspended: Boolean{其它参数});
    begin
      Inherited Create(true);
      FCurrentProgress:=0;//私有变量初始化 
      if CreateSuspended  then
        Resume;
    end;procedure TJobThread .Execute ;
    begin
      CoInitialize//初始化COM环境
      try
        TheHardWork();  finally
        CoUninitialize;//COM环境空间清理
      end;end;
      

  3.   

    CSDN下载里面有多线程的源代码DEMO 可以下载了看看