在一CListCtrl 控件中同时选中多项进行下载(这个下载是个比较复杂的过程,是通过 CSerialPort类,最后通过消息把一个一个字符发送过来,比较慢),但我在多文件下载时,怎么分开两个下载的过程啊??
例如:
void CMainFrame::OnFileDownload() 
{   
    POSITION pos = rInfo->m_List_Gps.GetFirstSelectedItemPosition();
while (pos)
{
           iIndex = rInfo->m_List_Gps.GetNextSelectedItem(pos);
           FileDown.OnFileDownload(iIndex);
         }
这样做不行啊,因为OnFileDownload()最终是要发送一个命令(SendCommand)给串口类(CSerialPort),串口类再发回消息,不是直接完成的。这样势必就会导致第一个OnFileDownload还没响应完成,第二个OnFileDownload也同时在响应了,我不知怎么把他们区分开,大家帮我想想法子,谢谢!!尽量说详细点!!

解决方案 »

  1.   


    OnFileDownload在响应时先判断文件是否在下载,如果是,创建一个CArray队列,将第二个下载放入队列,第一个文件下载完了向MainFrame用PostMessage发送消息通知,MainFrame收到消息执行第二个文件的下载。利用队里机制一个一个来!
      

  2.   

    大哥:这样???
    void CMainFrame::OnFileDownload() 
    {   
        POSITION pos = rInfo->m_List_Gps.GetFirstSelectedItemPosition();
    while (pos)
    {
               iIndex = rInfo->m_List_Gps.GetNextSelectedItem(pos);
               if(消息收到) 
               FileDown.OnFileDownload(iIndex);
             }下载结束时发出一个消息。这样不行吧,到if(消息收到) 这步时,程序只会认为没收到消息而进行下一个iIndex的,还有,CArray不大会用啊,能大概讲一下吗???谢谢!!!