遇到一个很奇怪的问题:在客户端通过CSocket关联CSocketFile,再关联CArchive,与服务器通信,写一个线程,里面有一个循环,向CArchive文件中WriteStr,又不断地ReadStr,在此过程进行的时候,关掉服务器程序,则客户端程序中的delete CArchive的指针会发生系统错误,代号为10054?不知道这是什么原因。

解决方案 »

  1.   

    没想到被我自己找到了错误,我就分享吧;
    这个问题是当一个CArchive 对象调用WriteStr的时候,与这个对象绑定的CSocket和CSocketFile已经因为服务器无法预计的断开而断开,这个操作是无法进行的!或者会导致这个函数仍然在等待或者处理不确定的状态,因此,这个 CArchive对象的指针是不能被delete的,当然,它再去调用其它的成员函数也是不对的,就会发生访问违例。