chúng tôi chạy một số trường hợp của chương trình của chúng tôi (C#) trên một máy tính duy nhất. Trong mỗi trường hợp, mã của chúng tôi cố tạo các tệp tạm thời "nhiều" với sự trợ giúp của phương thức Path.GetTempFile(). Và đôi khi, chương trình của chúng tôi không thành công với ngoại lệ:Path.GetTempFileName trong MultiProcessing
Exception: Access to the path is denied.
StackTrace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Path.GetTempFileName()
Tôi đã kiểm tra thư mục tạm thời và không tìm thấy một cái gì đó kỳ lạ: đĩa miễn phí là đủ, số lượng tập tin tạm thời không phải là rất lớn, vv
tôi chỉ có một lời giải thích: một cá thể có tệp tạm thời và mở nó, nhưng trong cùng một thời gian, một cá thể khác cũng lấy tên của tệp tạm thời và cố gắng mở nó. Nếu đúng? Nếu có, làm thế nào để giải quyết vấn đề, nếu không làm thế nào để hiểu những gì một vấn đề?
UPD: không thành công trên máy tính với Windows Server 2008 HPC
Cảm ơn bạn, Igor.
Tôi không nghĩ là vậy. Nếu phương thức 'GetTempFileName' không an toàn thread hoặc không tạo ra một tên ngẫu nhiên, nó sẽ không có ở đó. Không phải là tôi biết nguyên nhân chính xác là gì ... – Noldorin
Để loại bỏ những gì bạn nghĩ có thể là nguyên nhân, chỉ cần làm một * nếu (Directory.Exists (myTempFolderName)) * trước khi bạn tạo thư mục tạm thời - nếu nó tồn tại sau đó tạo ra một tên mới. – slugster
Bạn có nghĩa là, nó không phải là thực hành tốt để sử dụng Path.GetTempFileName()? Nếu phương pháp không "đa luồng hoặc quá trình lưu", chúng tôi có thể sử dụng phương pháp này như thế nào? khi tôi cần thư mục tạm thời với tiện ích mở rộng đặc biệt, tôi sử dụng Hướng dẫn để tạo tên tệp duy nhất. – constructor