MFC中deletefile沒有洗掉檔案,Movefile也移動失敗,Getlasterror回傳32->行程無法訪問檔案,因為另一個程式正在使用此檔案.請教各位大神該怎么洗掉檔案?初學MFC,有很多東西還不清楚,所以最好有例子。謝謝。
uj5u.com熱心網友回復:
說明這個檔案正在被其他行程占用著,不能被洗掉和移動是很正常的。當占用這個檔案的行程關閉,才可以洗掉和移動。
uj5u.com熱心網友回復:
請問怎么關閉這個行程呢?
uj5u.com熱心網友回復:

殺行程啊,點右上角關閉按鈕啊之類的。
uj5u.com熱心網友回復:
http://www.nirsoft.net/utils/opened_files_view.htmluj5u.com熱心網友回復:
open了檔案,就需要close掉uj5u.com熱心網友回復:
我的程式包括3個部分——用Fromfile匯入影像,然后通過執行緒對影像進行處理,最后用deletefile洗掉原圖。但現在問題是無法洗掉檔案,GetLastError回傳32.求解決辦法。m_pSelectedImage = Bitmap::FromFile(filePath.AllocSysString())//匯入影像,filepath為檔案路徑;
……
m_hThreadTools = CreateThread(NULL,
0,
RunImageToolsThread,
this,
0,
&m_dwThreadID);//創建執行緒
……
DeleteFile(filePath);//洗掉檔案
uj5u.com熱心網友回復:
首先,確認是哪個行程在占用檔案?關掉你的程式,使用資源管理器嘗試洗掉檔案,如果這時候可以洗掉,說明你的程式打開了檔案,沒有關閉導致DeleteFile失敗。
uj5u.com熱心網友回復:
FromFile占用著檔案,所以無法洗掉,你有沒有Dispose釋放?
uj5u.com熱心網友回復:
看你創建的執行緒里面有哪個地方用到這個檔案啊,uj5u.com熱心網友回復:
FromFile占用著檔案,所以無法洗掉,
你有沒有Dispose釋放?
請問該如何地方呢?執行緒運行結束后會自動退出啊。
uj5u.com熱心網友回復:
看你創建的執行緒里面有哪個地方用到這個檔案啊,
都是以指標的形式呼叫的
比如,獲得影像的RGB值
CImageView *pView = (CImageView*)lpParam; //得到當前視圖
pView->m_pSelectedImage->GetPixel(x , y , &color);
uj5u.com熱心網友回復:
FromFile占用著檔案,所以無法洗掉,
你有沒有Dispose釋放?
請問該如何地方呢?執行緒運行結束后會自動退出啊。
你什么時候不用什么時候退出
m_pSelectedImage執行緒里用到了嗎
uj5u.com熱心網友回復:
FromFile占用著檔案,所以無法洗掉,
你有沒有Dispose釋放?
請問該如何地方呢?執行緒運行結束后會自動退出啊。
你什么時候不用什么時候退出
m_pSelectedImage執行緒里用到了嗎
用到了,就像我在11樓說的那樣
uj5u.com熱心網友回復:
FromFile占用著檔案,所以無法洗掉,
你有沒有Dispose釋放?
請問該如何地方呢?執行緒運行結束后會自動退出啊。
你什么時候不用什么時候退出
m_pSelectedImage執行緒里用到了嗎
用到了,就像我在11樓說的那樣
既然你的pSelectedImage執行緒中用到了,那么你在呼叫執行緒后再刪肯定出錯
FromFile跟Dispose是成套出現的,就象new 跟 delete一樣啊,問題已經找到了,只是你的邏輯不對而已。
uj5u.com熱心網友回復:
絕對是你打開了檔案沒有關閉。關閉了用sleep幾十毫秒。然后洗掉uj5u.com熱心網友回復:
既然你的pSelectedImage執行緒中用到了,那么你在呼叫執行緒后再刪肯定出錯
FromFile跟Dispose是成套出現的,就象new 跟 delete一樣啊,問題已經找到了,只是你的邏輯不對而已。
error C2039: “Dispose”: 不是“Gdiplus::Bitmap”的成員
uj5u.com熱心網友回復:
使用std::unique_ptr成員變數 unique_ptr<Bitmap> m_bitmap;
加載圖片 m_bitmap.reset(Bitmap::FromFile(L"xxx"));
要洗掉檔案的時候,m_bitmap.reset(); DeleteFile();
uj5u.com熱心網友回復:
你的執行緒 還沒 退出。uj5u.com熱心網友回復:
既然你的pSelectedImage執行緒中用到了,那么你在呼叫執行緒后再刪肯定出錯
FromFile跟Dispose是成套出現的,就象new 跟 delete一樣啊,問題已經找到了,只是你的邏輯不對而已。
error C2039: “Dispose”: 不是“Gdiplus::Bitmap”的成員
delete pSelectedImage;
pSelectedImage = NULL
uj5u.com熱心網友回復:
delete pSelectedImage;
pSelectedImage = NULL
還是不行啊
uj5u.com熱心網友回復:
你的執行緒 還沒 退出。
怎樣看執行緒是否退出啊?怎么退出?執行緒不是運行結束后就自動退出的嗎?
uj5u.com熱心網友回復:
先close,再delete?也許轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/119435.html
標籤:基礎類
