Tôi đã tạo một tiện ích sao chép trong C# (.NET 2.0 Framework) sao chép tệp, thư mục và thư mục phụ đệ quy, vv Chương trình có giao diện cho thấy tệp hiện tại đang được sao chép, số tệp hiện tại (chuỗi), tổng số tệp sẽ được sao chép và phần trăm đã hoàn thành cho các thao tác sao chép. Ngoài ra còn có một thanh tiến trình, dựa trên tập tin/tổng số tập tin hiện tại.Tôi có thể hiển thị tiến trình sao chép tệp bằng FileInfo.CopyTo() trong .NET không?
Sự cố của tôi liên quan đến việc sao chép các tệp lớn. Tôi đã không thể tìm thấy một cách để chỉ ra sự tiến bộ tổng số bản sao của một tập tin lớn (sử dụng cấu trúc lớp học hiện tại của tôi mà sử dụng phương pháp FileInfo.CopyTo). Cách giải quyết khác là tôi đã tách các hoạt động sao chép tệp và hiển thị GUI thành các chuỗi của riêng chúng và thiết lập một gợi ý trực quan để cho thấy rằng công việc đang được thực hiện. Ít nhất người dùng biết rằng chương trình không bị đóng băng và vẫn đang sao chép tệp. Sẽ tốt hơn nếu có thể hiển thị tiến độ dựa trên tổng số byte hoặc có một số loại sự kiện phát sinh từ phương thức FileInfo.CopyTo cho biết tổng số byte được sao chép từ tệp hiện tại.
Tôi biết thuộc tính FileInfo.Length, vì vậy tôi chắc chắn có một cách MacGuyver sự kiện của riêng tôi dựa trên điều này và có một trình xử lý bên GUI về những thứ đang đọc các bản cập nhật (có thể dựa trên kiểm tra thuộc tính FileInfo.Length của đối tượng đích bằng cách sử dụng một số loại timer?).
Có ai biết cách để làm điều này mà tôi đang xem. Nếu tôi có thể tránh nó, tôi không muốn viết lại lớp của tôi để sao chép byte thông qua một dòng và theo dõi nó theo cách đó (mặc dù tôi đang nghĩ rằng tôi có thể bị mắc kẹt với đi tuyến đường đó).
cảm ơn trước
PS - Tôi đang mắc kẹt với .NET framework 2.0 trở lên, vì vậy bất kỳ giải pháp mà yêu cầu tính năng có sẵn trong> = 3,0 chỉ không phải là một lựa chọn cho tôi.
PPS - Tôi mở cho các giải pháp trong bất kỳ ngôn ngữ .NET nào, không chỉ C#.
bất kỳ mã nguồn mẫu đầy đủ nào? – Kiquenet