2014-09-25 4 views
0

I 다음은 .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 

이 기능은 정확한 날짜를 반환,하지만을 나는이

뭔가를 할 때 내가 정확히 변경해야 할 무엇

IOException이는 ("다른 프로세스에서 사용 중이기 때문에 프로세스가 파일을 액세스 할 수 없습니다") (아마도저기서 : (...) 다음

dim dateOfPhoto as Date = GetRecordingDateOfPhoto("foo.jpg") 
My.Computer.FileSystem.MoveFile("foo.jpg", "bar.jpg") 

내가있는 MoveFile에서 예외가 g/end??) GetRecordingDateOfPhoto (...) - 함수에서이 예외를 방지하려면?

미리 감사드립니다.

답변

0

불행히도이 클래스는 끔찍하게 구현되었습니다. Microsoft를 비난하십시오. BitmapFrame.Create는 내부적으로 스트림을 만들고 결코 닫지 않습니다.

출처 : microsoft .net reference source

0

이 기능은 공유 됨으로 인해 발생합니다. 지역 변수는 클래스 인스턴스화 수에 관계없이 한 번만 존재합니다. 공유하지 않거나 변수를 Nothing으로 설정하십시오.