DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ファイルの削除について。

環境/言語:[VB.NET ]
分類:[.NET]

いつもお世話になっております。

VB.NETのファイルの削除について質問させてください。

あるファイル(ディレクトリ)を操作していて、
IOExceptionが発生し、その後ファイル(ディレクトリ)を削除しようとすると、
他のプロセスが使用している。
という旨のエラーが表示され、削除ができません。

※時間が経つと削除できるようになります。

1.プロセスを無視して削除する。
2.使用しているプロセスを特定し、
  ファイル(ディレクトリ)を開放して、削除する。

等、どんな方法でも良いのですが、
この場合の削除方法について、ご存知のかたがいらっしゃいましたら、
教えて下さい。

よろしくお願します。
■No2348に返信(SHさんの記事)
> いつもお世話になっております。
>
> VB.NETのファイルの削除について質問させてください。
>
> あるファイル(ディレクトリ)を操作していて、
> IOExceptionが発生し、その後ファイル(ディレクトリ)を削除しようとすると、
> 他のプロセスが使用している。
> という旨のエラーが表示され、削除ができません。
>
> ※時間が経つと削除できるようになります。
>
> 1.プロセスを無視して削除する。
> 2.使用しているプロセスを特定し、
>   ファイル(ディレクトリ)を開放して、削除する。
>
> 等、どんな方法でも良いのですが、
> この場合の削除方法について、ご存知のかたがいらっしゃいましたら、
> 教えて下さい。
>
> よろしくお願します。
>

私も以前同じ経験がありましたので、私が解決した方法を書きます。
1.タスクマネジャーからファイル(ディレクトリ)を使用しているプロセスを特定する。
2.プログラム実行時に同じプロセスがあるかどうか確認してあったら、問題のプロセスを
 終了させる。
3.SHさんのプログラムが終了時に再度、同じプロセスを確認し、またあったら終了させる。

粗末ですが、EXCELプロセスを止めるサンプルをのせます。
違ってたら、すみません。。

#Region "Object解消(NAR)"
Public Sub NAR(ByVal o As Object)
'Excelが裏で起動したままになることを防ぐ
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(o)
Catch
Finally
o = Nothing
End Try
End Sub
#End Region

#Region "起動Excel終了(excel_End)"
Function excel_End()
'Excel終了処理
NAR(xlSheet)
xlBook.Close(False)
NAR(xlBook)
NAR(xlBooks)
xlApp.Quit()
NAR(xlApp)
'System.Threading.Thread.Sleep(5)
myStream.Close()
End Function
#End Region



>
シツモン様

早速のお返事有難うございます。

教えていただいた方法を試してみます。

結果は別途報告いたします。

ありがとうございました。
HPにのっていた、プロセスを強制終了する方法でうまくいきました。
以下のような感じです。

Private Sub KillProcess()
Try
' "AAA"という名前のプロセスを取得
Dim Prc As Process() = Process.GetProcessesByName _
("AAA")
If Prc.Length > 0 Then
' プロセスを強制終了
Prc(0).Kill()
Prc(0).WaitForExit()
End If
Catch ex As Exception
Throw ex
End Try

End Sub

大変お世話になりました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板