0

次のコードを使用して、プログラムの開始時に png アイコン ファイルを読み込みます。

if (NULL == m_pImage) {
        Bitmap *pImage = new Bitmap(T2W(filePath));
        if (size == kSmallIconSize) {
            m_pImage = static_cast<Bitmap *>(pImage->GetThumbnailImage(size, size));
        } else {
            m_pImage = pImage;
        }
        if (m_pImage->GetLastStatus() == Ok) 
            m_resID = index;
        else
            return FALSE;
    }
    return TRUE;

その後、あるイベントで、同じファイルを開こうとします

CFile file;
if (TRUE == file.Open(filePath, CFile::modeRead))

しかし、ファイルを開くことができず、GetLastError()32 を返します。

ERROR_SHARING_VIOLATION

どうすればこれを修正できますか?

アップデート:

エラーの原因となっている「ビットマップの読み込み」コードを確認するために、その直後に CFile::Open を試して確認しました。

Bitmap::Bitmap(WCHAR *pFilePath)ファイルを共有したり、ロードした後に手放したりしないのはなぜですか..?

4

2 に答える 2

1

Microsoftナレッジベースから:

MSDN1

そして回避策:

MSDN2

于 2013-08-09T14:19:33.707 に答える