2016-05-24 77 views
0

TIFFファイルをvb.netの.PNGファイルに変換しています。まず、TIFFファイルを特定の場所(NewFileNameで指定)に保存します。次に、Bitmap.Saveメソッドを使用してファイルを.PNGに変換します。後で私のプログラムで、私はすべての.tifファイルを削除しようとします。しかし、ファイルがまだ使用中であるというエラーが表示されます。私はこれの理由についていくつかの研究を行いましたが、多くのエラーはファイルストリームを閉じないことから来ていると私は読んでいます。しかし、プログラムではファイルストリームを使用しないので、それは別のものだと思います。提案された別の可能性は、ファイルが2回開かれたことでした。私は自分のコードを精査して、ファイルが開かれていないと確信しており、保存され、bitmap.Saveコマンドでアクセスされただけです。私はまた、handle.exeとプロセスエクスプローラをダウンロードして、どのプロセスがファイルをロックしているかを調べました。どうやら、ファイルはbitmap.saveコマンドを使ってPNGに変換するだけで、プログラムで使用されているようです。おそらく、bitmap.Saveを閉じる方法がありますか?何を追加するかについての他の提案も高く評価されます。ファイルが別のプロセスで使用されているためにファイルを削除できません - VB.net

objApplication.StartCommand(SolidEdgeConstants.AssemblyCommandConstants.AssemblyViewBottomView) 
    view = window.View 
    view.Fit() 
    withoutExt = "C:\Folder" & "\" & shortForms(12) & FileName 
    NewFileName = withoutExt & ".tif" 
    view.SaveAsImage(NewFileName, Width:=width, Height:=height, Resolution:=resolution, ColorDepth:=colorDepth) 
    System.Drawing.Bitmap.FromFile(NewFileName).Save(withoutExt & ".png", System.Drawing.Imaging.ImageFormat.Png) 

ありがとうございます!

+0

TIFFを最初に開いた場所でコードを共有できますか? –

+0

@robin私の質問は誤解を招いて申し訳ありません。私はTIFFを直接オープンすることはありません。私は単に.saveasimageコマンドとbitmap.saveコマンドでアクセスします。私は質問を編集します。 –

+0

@robin投稿を編集し、ファイルがbitmap.saveコマンドでロックされていることを確認しました。多分それは助けます。 –

答えて

0

私はそれを理解しました。必要なのは、usingステートメントで、NewFileNameが削除される前に解放されるようにするだけです。私はこれにコードを変更し、それは働いた:

view = window.View 
    view.Fit() 
    withoutExt = ChosenFile & "\" & shortForms(13) & FileName 
    NewFileName = withoutExt & ".tif" 
    view.SaveAsImage(NewFileName, Width:=width, Height:=height, Resolution:=resolution, ColorDepth:=colorDepth) 
    Using tempImage = System.Drawing.Bitmap.FromFile(NewFileName) 
     tempImage.Save(withoutExt & ".png", System.Drawing.Imaging.ImageFormat.Png) 
    End Using 
    My.Computer.FileSystem.DeleteFile(NewFileName) 

おかげさまで皆さんお手伝いします!

関連する問題