Tôi có một số tập tin được tạo ra trong một hàm định nghĩa là:Tệp có vẻ được mở sau khi được gửi dưới dạng tệp đính kèm của SmtpClient. Làm cách nào để xóa tệp?
Public Function GeneratePDF(exportFileName As String) As String
Dim GeneratePath As String = FileSystem.CombinePath(standardDirectory, exportFileName & DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") & ".pdf")
If GenerateFile(GeneratePath) Then
Return GeneratePath
End If
Return String.Empty
End Function
Những tập tin này ngay lập tức được in và các tập tin được tự động lưu vào một thư mục; bản thân các tập tin không được sử dụng bởi người dùng phần mềm thực tế. Tôi timestamp các tập tin để giữ cho chúng được xác định duy nhất cho mục đích kiểm toán.
Tôi hiện đã nhận được yêu cầu gửi một số tệp này qua email bên ngoài cho công ty và ai đó đã phàn nàn rằng tên tệp hiện tại không thân thiện với người dùng.
Vì vậy, tôi đã cố gắng sao chép các tập tin được tạo ra vào một thư mục tạm thời, với một tên thân thiện hơn, gửi email file thân thiện hơn, sau đó xóa nó, để lại dấu vết của tôi còn nguyên vẹn, như vậy:
Public Function GeneratePDF(exportFileName As String) As String
Dim GeneratePath As String = FileSystem.CombinePath(standardDirectory, exportFileName & DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") & ".pdf")
If GenerateFile(GeneratePath) Then
Dim friendlyFilePath As String = FileSystem.CombinePath(standardDirectory, GetFriendlyFileName(GeneratePath))
System.IO.File.Copy(GeneratePath, friendlyFilePath)
Dim mailMsg As New System.Net.Mail.MailMessage
Dim smtp As New System.Net.Mail.SmtpClient
[Vast amount of code, which attaches friendlyFilePath to the email, then sends it]
System.IO.File.Delete(friendlyFilePath)
Return GeneratePath
End If
Return String.Empty
End Function
này ném một System.IO.IOException
trên dòng System.IO.File.Delete(friendlyFilePath)
vì tệp vẫn đang được sử dụng, sau khi tệp đã được gửi qua email.
Tôi đã lấy mã email, điều này làm cho quá trình sao chép và xóa hoạt động tốt, vì vậy dường như đính kèm tệp vào email gây ra sự cố.
Tôi cũng đã thử ngắt kết nối trước dòng xóa, chờ năm phút, xác nhận email đã được gửi, sau đó chuyển mã, nhưng ngoại lệ tương tự vẫn bị ném.
Có ai có thể đề xuất cách giải quyết vấn đề này không?
Bất kỳ cơ hội nào trong khu vực [số lượng lớn mã] đó bạn có một luồng loại nào đó mà bạn chưa đóng? –