我正在尋找一種方法來查看鎖定文件的目錄(及其子目錄),即應用程序打開文件並將其鎖定時,事件應在我的應用程序中觸發。C# - 檢測目錄中的鎖定文件
所以我一直在使用FileSystemWatcher的其他目的,如檢測重命名,更新等,但看鎖[使用上次訪問]據需要按規定Here 這是不是一種選擇,到目前爲止一個註冊表修改。
我至今認爲的其他解決方案是使用另一個線程中的FileInfo對象持續查找'LastAccess'屬性中的更改,並驗證文件是否被鎖定。
有沒有更好的解決方案?
我正在尋找一種方法來查看鎖定文件的目錄(及其子目錄),即應用程序打開文件並將其鎖定時,事件應在我的應用程序中觸發。C# - 檢測目錄中的鎖定文件
所以我一直在使用FileSystemWatcher的其他目的,如檢測重命名,更新等,但看鎖[使用上次訪問]據需要按規定Here 這是不是一種選擇,到目前爲止一個註冊表修改。
我至今認爲的其他解決方案是使用另一個線程中的FileInfo對象持續查找'LastAccess'屬性中的更改,並驗證文件是否被鎖定。
有沒有更好的解決方案?
不幸的是,沒有辦法看到文件是否被進程鎖定。
但是你可以嘗試自己來訪問文件和火基於這樣一個事件:
public bool IsFileLocked(string filePath)
{
try
{
using (File.Open(filePath, FileMode.Open)){}
}
catch (IOException e)
{
retturn true;
}
return false;
}
當你的應用程序無法訪問文件,該函數將返回true(因此它在被另一個程序使用),否則返回false。
您可以嘗試的Sysinternals檢查handle.exe,有人有類似的問題:Check for locked files in Directory and find locking applicaiton
我猜你可能會從您的應用程序調用此。
謝謝,我正在研究它。 –
我不是在尋找一個特定的文件。在這裏我有一個目錄,我需要注意在該目錄中鎖定文件。 –
如果你想有效地做到這一點(可靠),你可能需要看看實現你自己的[微過濾器驅動程序](http://msdn.microsoft.com/en-gb/library/windows/hardware/ff540402(v = vs.85).aspx)並掛鉤到適當的API。 – James