は私のように定義された関数で生成されたファイルの数を持っている:ファイルがSmtpClientによって添付ファイルとして送信された後に開かれているように見えます。ファイルを削除するにはどうしたらいいですか?
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
これらのファイルは、すぐに印刷され、ファイルが自動的にディレクトリに保存されています。ファイルそのものは、実際のソフトウェアユーザーが使用するものではありません。私はファイルをタイムスタンプして、監査目的で一意に識別された状態に保ちます。
私は今、これらのファイルのいくつかを会社の外部にメールするという要件を受け取りました。誰かが、現在のファイル名がユーザーフレンドリーではないと訴えました。
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
これはスロー:
だから、私はそうのように、そのまま私の監査証跡を残し、それを削除、その後、友好ファイルを電子メールで送信する、親しみやすい名前で、一時ディレクトリに生成されたファイルをコピーしようとしましたSystem.IO.IOException
の行にあるSystem.IO.File.Delete(friendlyFilePath)
は、ファイルが電子メールで送信された後も使用されているためです。
私は電子メールコードを取り出しました。コピーと削除がうまくいくので、問題を引き起こす電子メールにファイルが添付されているようです。
私はまた、電子メールが送信されたことを確認して5分待ってから、コードを進めても、同じ例外がスローされます。
誰もこの問題を解決する方法を提案できますか?
[膨大な量のコード]領域に、あなたが閉じていない何らかの種類のストリームがある可能性がありますか? –