Sau khi loại bỏ một tập tin bằng cách sử dụng lớp System.IO.File:Làm thế nào để kiểm tra xem System.IO.File.Delete xóa một tập tin thành công
System.IO.File.Delete(openedPdfs.path);
tôi cần phải chạy một số mã nếu tập tin đã bị xóa thành công . Miễn là phương thức không trả về bất kỳ giá trị nào, tôi sẽ kiểm tra xem tệp có tồn tại sau phương thức xóa hay không. Nếu nó vẫn tồn tại, tôi cho rằng chiến dịch đã thất bại.
Vấn đề là, phương pháp xóa hoạt động tốt, nhưng có một vài giây để xóa tệp. Hàm Exist trả về true vì tại thời điểm nó kiểm tra tệp có ở đó.
Làm cách nào để xác minh xem liệu System.IO.File.Delete(openedPdfs.path);
có hoàn tất thành công hay không?
Code:
FileInfo file = new FileInfo(openedPdfs.path);
System.IO.File.Delete(openedPdfs.path);
if (file.Exists == false)
{ ... }
else
{ ... }
"Cách thanh lịch nhất mà tôi có thể nghĩ đến là sử dụng một [FileSystemWatcher] (http: // MSDN. microsoft.com/en-us/library/system.io.filesystemwatcher.aspx) và đăng ký sự kiện 'Đã xóa' của nó." http://stackoverflow.com/questions/9370012/waiting-for-system-to-delete-file –
Bạn có lo ngại về trường hợp khi xóa thành công, nhưng một tệp mới cùng tên được tạo trước khi kiểm tra của bạn cho sự tồn tại? – HABO
@TimSchmelter FileSystemWatcher đã được báo cáo để thả các sự kiện đang tải. Một số người đã gợi ý rằng nó có thể được sử dụng để cải thiện khả năng đáp ứng, nhưng họ vẫn thăm dò ý kiến tại một khoảng thời gian giảm để chắc chắn không bỏ lỡ các sự kiện. FSW cũng có thể kéo hiệu suất xuống, đặc biệt nếu các bộ lọc không cần thiết thô. –