我有以下功能来读取.jpg文件的录制日期:
Public Shared Function GetRecordingDateOfPhoto(pathOfPhoto As String) As DateTime
If Not IO.File.Exists(pathOfPhoto) Then
Throw New FileNotFoundException
End If
Dim bitmapSource As BitmapSource = BitmapFrame.Create(New Uri(pathOfPhoto, UriKind.Relative))
Dim bitmapMetadata As BitmapMetadata = TryCast(bitmapSource.Metadata, BitmapMetadata)
Dim result As DateTime
If DateTime.TryParse(bitmapMetadata.DateTaken, result) Then
Return result
Else
Throw New FormatException
End If
End Function
此函数返回正确的日期,但是当我做这样的事情时
dim dateOfPhoto as Date = GetRecordingDateOfPhoto("foo.jpg")
My.Computer.FileSystem.MoveFile("foo.jpg", "bar.jpg")
然后我从MoveFile(...)得到一个异常:IOException(“进程无法访问文件,因为它被另一个进程使用”)
我必须在GetRecordingDateOfPhoto(...) - 函数中准确更改(可能使用/ end using?)以避免此异常吗?
非常感谢提前。
答案 0 :(得分:0)
这种情况正在发生,因为该功能已共享。无论有多少类实例,它的局部变量只存在一次。尝试不将其共享或将变量设置为Nothing。
答案 1 :(得分:0)
不幸的是,这个课程实施得非常糟糕。怪微软。 BitmapFrame.Create在内部创建一个流,但从不关闭它。