Bạn có thể thử mã được cung cấp trong this question over here hoặc xem other suggestions here.
Cách tiếp cận chung là liệt kê các chốt của tất cả các quy trình, có các đường dẫn tập tin của những tay cầm, và so sánh với các tập tin bạn quan tâm.
Nhưng một vấn đề với phương pháp này là ngay cả khi bạn có thể xác định rằng tập tin bị khóa và ứng dụng nào có khóa tập tin sau đó bạn vẫn sẽ phải đối phó với điều kiện chủng tộc, ví dụ ...
một phần nghìn giây sau
- file không bị khóa
- ứng dụng mà đã giữ khóa tại là không
sau đó hai phần nghìn giây sau
- tập tin bị khóa (một lần nữa)
- một ứng dụng khác nhau có khóa
sau đó ba mili giây sau
- tập tin vẫn còn bị khóa
- chưa ứng dụng khác có khóa
... vv
One suggestion là để cố gắng để có được các tập tin xử lý trong ứng dụng của bạn, và nắm bắt những ngoại lệ khi bạn có thể' t.
try
{
using (Stream stream = new FileStream("MyFilename.txt"))
{
}
} catch {
//check here why it failed and ask user to retry if the file is in use.
}
Tất nhiên điều này sẽ không giúp xác định (các) thủ phạm nhưng ít nhất bạn có cách an toàn hơn để truy cập tệp.
Nguồn
2011-01-27 14:04:36
Trùng lặp: http://stackoverflow.com/questions/317071/how-do-i-find-out-which-process-is-locking-a-file-using-net –
Câu trả lời ở đây có thể được hợp nhất bằng cách nào đó không với câu hỏi trùng lặp? –
Vui lòng không xóa câu hỏi này. Câu hỏi khác có thể tương đương về mặt bản thể học nhưng nó không khớp với tìm kiếm của tôi. Câu hỏi này có thành tích ở chỗ nó hỗ trợ một đường dẫn truy cập khác. –