我要读取一个日志文件,并把里边的记录存储到数据库中去!现在老板要求再添加一个进度条以显示进度。
这是不是要用到多线程编程,不太会。大家给讲讲思路。

解决方案 »

  1.   

    可以用普通的WM_TIMER。每次处理此消息时判断进度,并更新相应的滚动条。保存完毕后KillTimer()
      

  2.   

    kentis(小张) 的意思最好还是用多线程吧!
      

  3.   

    如果只是让程序做loading,可以不用多线程了,首先获取共要读取的字节数,在循环读取中更新进度条,这里可能组塞界面消息循环,用UpdateWindow强制刷新如果还要做其他事情,多线程了...
      

  4.   

    我的线程函数,传入的参数是一个LPTSTR类型的,用于描述文件名,供CFile打开文件用。
    我要读取的文件是一个日志文件,每一行就是一条记录,所以读完一条记录就要进行处理,用的是Deal(CString& );这个函数,做读取÷处理和导入数据库的工作。
    我没有做过多线程程序设计,怎么样才能将进度条更新,请大家给点意见。最好有代码!
    UINT ReadLog(LPVOID pParam)
    { LPTSTR pstrFileName;
    pstrFileName = (LPTSTR)pParam; CString _strBuffer = _T("");
    CString& r_strBuffer = _strBuffer;
    CAdoRecordSet* pLogRS;
    pLogRS = new CAdoRecordSet();
    pLogRS->SetAdoConnection(theApp.m_pAdoConnection); CStdioFile _file;
    VERIFY(_file.Open(pstrFileName,CFile::modeRead));
    while(_file.ReadString(r_strBuffer))
    {
      if(r_strBuffer.IsEmpty()==FALSE)
      {
    this->Deal(r_strBuffer);
      }
    } return 1;
    }