Tôi đã tạo một ứng dụng nhỏ đang chạy trên Win7-PC. Tất cả điều đó là kiểm tra nội dung của ổ đĩa mạng lúc 1:00 giờ sáng (và so sánh nó với một thư mục trên ổ cứng cục bộ), và nếu có sự khác biệt, hãy sao chép sự khác biệt vào thư mục này .Ứng dụng nói rằng ổ đĩa mạng không tồn tại, nhưng được tìm thấy bằng cách sử dụng OpenFileDialog
Vấn đề là, đôi khi nó không thể tìm thấy ổ đĩa mạng.
Khi ứng dụng khởi động, ổ đĩa mạng được tìm thấy bằng cách sử dụng nút trên ứng dụng khởi động OpenFileDialog và ký tự ổ đĩa kết quả được đưa vào hộp văn bản bên cạnh nút. Từ thời điểm đó nó chỉ nên chạy một mình. PC không bao giờ bị tắt.
Khi không thể tìm thấy ổ đĩa mạng, tôi có thể nhấn nút trên cùng một ứng dụng, chọn ổ đĩa trong OpenFileDialog (ký tự ổ đĩa không bao giờ thay đổi) và ứng dụng sẽ chạy hoàn hảo trong một cặp vợ chồng trong các ngày. Sau đó, vấn đề xảy ra một lần nữa.
Câu hỏi đặt ra là: Tại sao ổ đĩa mạng được truy cập thông qua OpenFileDialog trên ứng dụng của tôi, nhưng ứng dụng của tôi có thể không?
Ứng dụng của tôi bắt đầu sao chép quá trình sử dụng chức năng này (được gọi với "Y: \") để xác định xem ổ đĩa có mặt hay không:
public bool fn_drive_exists(string par_string)
{
DirectoryInfo di_dir = new DirectoryInfo(par_string);
if (di_dir.Exists)
{
return true;
}
return false;
}
... và đôi khi nó trả về một False, cho đến khi tôi "đánh thức nó" bằng cách sử dụng OpenFileDialog.
OpenFileDialog làm gì, ứng dụng của tôi không?
Làm thế nào về bạn vượt qua trong '\\ server \ sharedFolder' thay vì tài xế mạng được ánh xạ 'Y : '? Liệu nó có cùng một vấn đề? –
Ngoài ra, hãy thử đặt một số thử lại logic xung quanh fn_drive_exists (có lẽ vòng lặp 5 lần với 6 giây chậm trễ mỗi vòng lặp). –
Âm thanh như đường dẫn UNC sẽ hoạt động trong trường hợp của bạn. Xem [SO post] này (http://stackoverflow.com/questions/133660/how-can-i-access-a-mapped-network-drive-with-system-io-directoryinfo) –