在尝试删除之前检查文件是否仍然打开,并循环直到它空闲

问题描述 投票:0回答:1

我有一个 WPF 应用程序,它以 Byte() 的形式从数据库中提取 Word 文件,保存到临时目录,然后互操作处理该文件以制作另一个包含 x 页的文件 - 也保存到同一目录。最后,所有内容都包含在电子邮件中并邮寄 - 当该过程结束时,所有文件都将被删除,并且该过程将再次开始。

这可以完美地工作一段时间,然后“卡住”并显示“文件已用另一个进程打开”

一切都从异步子程序运行,该子程序将部分构造交给不同的函数。

我正在尝试找到一种方法来在删除之前查看文件是否仍然打开(并循环直到关闭)。

 Dim vPath As String = AppContext.BaseDirectory
 If Not System.IO.Directory.Exists(vPath & "Temp_Files") Then
 System.IO.Directory.CreateDirectory(vPath & "Temp_Files")
 End If
 For Each deleteFile In Directory.GetFiles(vPath & "Temp_Files", "*.*", 
 SearchOption.TopDirectoryOnly)
 File.Delete(deleteFile)
 Next
wpf system.io.file
1个回答
0
投票

假设如果这些文件是“打开以进行写入”的文件,那么它们的属性一旦关闭就会发生变化。您可以使用 FileSystemWatcher 监视文件“状态”的变化。

监听文件系统更改通知并在以下情况下引发事件 目录或目录中的文件发生更改。

https://learn.microsoft.com/en-us/dotnet/api/system.io.filesystemwatcher?view=net-8.0

© www.soinside.com 2019 - 2024. All rights reserved.