tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: 使用中のファイルを削除(移動)する方法
投稿日: 2007/12/05(Wed) 20:12
投稿者mathar
花ちゃんさん・スクリプトプログラマさん ご回答ありがとうございます。
> ファイルが使用中・・のエラーがでるなら、ファイルが使用中 だからでは。
> imgFile はどのようになっているのですか?
Dim imgFile As String = Me.List1.Text 'ピクチャーボックスに表示したjpgファイルのフルパス
> 多分、最初の処理の部分(未掲載の部分)でファイルをロック(使用中)しているかと
> 思うので、一度最初の部分等をコメントにして確認してみて下さい。
bmp.Dispose() これでロック解除出来ていると思うのですが・・・
> 又、せっかくのコードなので動作確認できるようにするとこちらでも確認できるし
> コメントが入っていると何をやりたい(やろうとしているのか)のかが掴めるのですが
> Dim i As Integer
>   For i = 0 To bmp.PropertyItems.Length - 1
>     Dim pi As System.Drawing.Imaging.PropertyItem = bmp.PropertyItems(i)
'Exif情報から日付関係を探す
>        If pi.Id = &H132 Or pi.Id = &H9003 Or pi.Id = &H9004 And pi.Type = 2 Then
'値を変更する
>           pi.Value = System.Text.Encoding.ASCII.GetBytes( _
>           Nitiji + ControlChars.NullChar)
>           pi.Len = pi.Value.Length
'設定する
>           bmp.SetPropertyItem(pi)
>        End If
>   Next i
> Dim File_Name As String = System.IO.Path.GetFileName(imgFile)
> Dim FullPath As String = "D:\ChangeFile\" & File_Name
'"D:\ChangeFile\" & File_Name へ保存する
> bmp.Save(FullPath, System.Drawing.Imaging.ImageFormat.Jpeg)
> bmp.Dispose()
> 'ここまでは出来ます。

FileStreamオブジェクトを使用して画像のロックを解除
> Dim fs As System.IO.FileStream
>         fs = New System.IO.FileStream(imgFile, IO.FileMode.Open, IO.FileAccess.Read)
>         Me.Picture1.Image = System.Drawing.Image.FromStream(fs)
>         fs.Close()
>         Dim fi As New System.IO.FileInfo(imgFile)
>
>         Try
>             fi.Delete()'ここで必ずエラーとなります。
>         Catch ex As Exception
>             MessageBox.Show(ex.Message)
>         End Try
こんな感じです・・・。

> ファイルの削除はタイミングエラーが発生し得るものです。
> (エクスプローラが見に行ったりするので)
> 暫時置いて数回リトライしてみては。

何度かリトライしてみたら、なんと出来ました!!(する時で回数は変わります・・)
1回で削除・移動する方法など無いものですかね・・

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。