2010-01-20 45 views

回答

2

關閉您的應用程序中使用該文件的任何流。

如果錯誤是由於另一個正在運行的應用程序引起的,最好只嘗試操作並處理失敗。如果您檢查,然後嘗試執行操作,您創建競爭條件。如果刪除失敗(無論是因爲正在使用的文件還是權限),那麼只需處理該問題即可。

+0

其實該文件是一個圖像文件,但我沒有對它調用處理方法。我修好了,它開始工作。謝謝Yuliy – Boolean 2010-01-20 20:17:31

+0

你可能還想檢查使用情況 - 最好現在把支票放進去,而不是稍後有一個奇怪的錯誤彈出。 – aronchick 2010-01-20 20:27:15

+0

aronchick:最好是將刪除包裝在try-catch中,而不是如果(可刪除)File.Delete。這樣可以避免TOCTTOU(檢查到使用時間的時間)錯誤。 – Yuliy 2010-01-20 21:05:26

1

在VS2008中發生這種情況時運行一個程序,一旦我打開一個文件,停止執行,然後再次運行,並試圖對文件做任何事情。當發生這種情況時,我發現修復它的唯一方法是關閉VS並重新打開它,或者殺死* .vshost.exe進程以釋放文件。我從來沒有真正考慮過它爲什麼會發生,但我認爲這是因爲從VS運行爲應用程序的實際進程是* .vshost.exe文件,當您結束程序的執行時它不會關閉。

另外,爲防止這種情況發生,請務必確保正確關閉文件流或使用using塊。確保在通過VS結束執行之前執行代碼的這部分內容。

如果不是發生了什麼情況,請檢查mkus提供的答案,瞭解如何查看其他應用程序是否鎖定了您的文件。

+0

是的,這也發生在我身上......通常我只是重新啓動VS.感謝您停止vshost.exe進程的提示,我會在下次發生時嘗試。 – 2010-01-20 19:49:56

+0

我通常在那個時候重新啓動VS,通常也是我的電腦,因爲我通常每週只重新啓動一次,現在是重新啓動並獲取新鮮咖啡的合適時機......如果我在火車正中當它發生時,它的速度要快得多,只要殺死vshost進程並繼續我所做的,而不是因爲五分鐘等待所有的東西重新出現而出軌。 – 2010-01-20 20:02:13

0

看看你是否可以獲得安全處理。這又是非管理的東西。如果您可以獲得安全處理,則可能意味着該文件可以免費使用。

請參閱本link