Có cách nào để bỏ qua hoặc xóa khóa tập tin được giữ bởi một chuỗi khác mà không làm hỏng chuỗi không?Có thể bỏ qua khóa tập tin trong C# khi một luồng/quy trình khác không nhất thiết sử dụng khóa độc quyền không?
Tôi đang sử dụng thư viện của bên thứ ba trong ứng dụng đang hoạt động chỉ đọc hoạt động trên một tệp. Tôi cần một chuỗi thứ hai đọc tệp cùng một lúc để trích xuất một số dữ liệu bổ sung mà thư viện của bên thứ ba không hiển thị. Thật không may, thư viện của bên thứ ba đã mở tệp bằng cách sử dụng khóa Đọc/Ghi và do đó tôi nhận được thông thường "Quy trình không thể truy cập tệp ... vì nó đang được sử dụng bởi một quy trình khác" ngoại lệ.
Tôi muốn tránh tải trước toàn bộ tệp bằng chuỗi của mình vì tệp lớn và sẽ gây ra sự chậm trễ không mong muốn trong quá trình tải tệp này và mức sử dụng bộ nhớ dư thừa. Sao chép tệp không thực tế do kích thước tệp. Trong quá trình hoạt động bình thường, hai luồng nhấn cùng một tệp sẽ không gây ra bất kỳ vấn đề về hiệu suất/sự cố IO nào đáng kể. Tôi không cần đồng bộ hóa thời gian hoàn hảo giữa hai luồng, nhưng chúng cần phải đọc cùng một dữ liệu trong vòng một nửa giây.
Tôi không thể thay đổi thư viện của bên thứ ba.
Có bất kỳ vấn đề nào đối với vấn đề này không?
Khóa là khóa - nếu có, nó sẽ không bị khóa ... –
Và giống như với nhiều khóa, có vẻ như một số nhà phát triển thư viện không hiểu rằng ít hơn là nhiều hơn. :-) Tôi cũng sẽ hài lòng với một công việc thông minh xung quanh. –
Một shot dài: bạn có thể mở tệp đó dưới dạng chia sẻ _before_ thư viện bên thứ ba của bạn không? Có lẽ họ đã triển khai một số cơ chế dự phòng. –