用CFileDialog保存文件时,当
CFileDialog dlg(FALSE,.......);
dlg.DoModel();   //调起保存文件对话框 (1)
(1)处,从任务管理器上看出,此时调起了三个线程,当按‘取消’按钮后,发现调起的三个线程并没有退出,这是怎么回事呢?如果按‘保存’按钮,就会再调起三个线程,保存完成后,过一段时间这三个线程才结束,而另外三个线程还是未立即结束,等了一段时间,又有两个线程退出。
(2)更奇怪的是我定时读.ini文件中的键值,开始时一切正常。但当执行‘保存’功能后,就读不到.ini文件的键值了,调试发现字段名,键值名称,.ini文件都是正确的,就是读不出该键的值。
  

解决方案 »

  1.   

    1、MFC是被封装过后东西,至于这里创建线程,你可理解为他多线程遍历文件/文件夹时需要用到2、这地方没看明白,需要你自行调试吧!建议这样写:if( IDOK == dlg.DoModel())
    {
      //...
    }
      

  2.   

    (2)更奇怪的是我定时读.ini文件中的键值,开始时一切正常。但当执行‘保存’功能后,就读不到.ini文件的键值了,调试发现字段名,键值名称,.ini文件都是正确的,就是读不出该键的值。
    ------------------------------------------------------------------
    你确定不是你程序的问题???
      

  3.   

    我测试了一下,发现总线程达到了4个,难道MFC内部真的开了多线程?
      

  4.   

    我认为我的程序没有问题。我的定时器是单独开一个线程定时的,时间到的时候就会读.ini文件的键值,在没点击"保存"按钮时,测试很久一切正常。点击完成后就读不到键值了,也就是GetPrivateProfileString()出问题了。
      

  5.   

    [Quote=引用 9 楼 vc1000 的回复:]
    引用 5 楼 visualeleven 的回复:
    (2)更奇怪的是我定时读.ini文件中的键值,开始时一切正常。但当执行‘保存’功能后,就读不到.ini文件的键值了,调试发现字段名,键值名称,.ini文件都是正确的,就是读不出该键的值。
    ------------------------------------------------------------------
    CString KeyStr="";
      GetPrivateProfileString(inHead, inKey, "", KeyStr.GetBuffer(MAX_PATH),  MAX_PATH,  inpath);
      KeyStr.ReleaseBuffer();//这个一定要释放,要不会出现一些莫名其妙的问题,我也是遇到了同样的问题