2012-05-09 19 views
2

申し訳ありませんが、なぜファイルに書き込めないのか分かりません。それはそれが別のプロセスによって使用されていると言います。ここでエラーが(にIOExceptionが未処理だった)です:ファイルへの書き込み、別のプロセスで使用されているファイル

The process cannot access the file 'C:\Temp\TempFile.cfg' because it is being used by another process. 

ここで私は、ファイルへの書き込みに使用している現在のコードは次のとおりです。

Dim myConfig 
    Dim saveFileDialog1 As New SaveFileDialog() 

    saveFileDialog1.Filter = "Configuration Files (*.cfg)|*.cfg" 
    saveFileDialog1.FilterIndex = 2 
    saveFileDialog1.RestoreDirectory = True 

    If saveFileDialog1.ShowDialog() = DialogResult.OK Then 
     myConfig = saveFileDialog1.OpenFile() 
     If (myConfig IsNot Nothing) Then 
      System.IO.File.WriteAllText(saveFileDialog1.FileName, TextBox1_Output_Module.Text & vbCrLf & TextBox2_Output_Module.Text & vbCrLf & TextBox3_Output_Module.Text) 
      myConfig.Close() 
     End If 
    End If 

私は私が私を思ったように私が行方不明ですかわからないんだけどこれは昨日テストされ、うまくいった。

+0

他のプロセスとは何ですか? –

+0

それは私が知らないものです。私はまだ作成されていないファイルに書き込もうとしているので、メモ帳などの別のプログラムで既に開いている可能性のあるファイルを上書きしているようではありません。 – Muhnamana

答えて

1

私がやったことはまあまあですが、うまく動いているようです。私はif条件を取り出し、そのまま残りました。私はいつでも後でキャンセルをコードすることができます。

Dim myConfig 
    Dim saveFileDialog1 As New SaveFileDialog() 

    saveFileDialog1.Filter = "Configuration Files (*.cfg)|*.cfg" 
    saveFileDialog1.FilterIndex = 2 
    saveFileDialog1.RestoreDirectory = True 

    System.IO.File.WriteAllText(saveFileDialog1.FileName, TextBox1_Output_Module.Text & vbCrLf & TextBox2_Output_Module.Text & vbCrLf & TextBox3_Output_Module.Text) 

これはOK /キャンセルボタンのコードです。

If saveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then 
     System.IO.File.WriteAllText(saveFileDialog1.FileName, TextBox1_Output_Module.Text & vbCrLf & TextBox2_Output_Module.Text & vbCrLf & TextBox3_Output_Module.Text) 
    End If 
+0

SaveDialogでCancelを押すとどうなりますか? – Steve

+0

ok/cancelコードが追加されました。 – Muhnamana

3

ファイルを開いたままにするプロセスは、自分のプロセスであるとします。
saveDialog1.OpenFile()を呼び出すと、ファイルが開かれ、ストリームが返されます。
次に、上の例外の結果として同じファイルを再び開こうとするWriteAllText()を呼び出します。
は、あなたは、単にWriteAllTextは()、新しいファイルを作成し、ファイルに指定した文字列を書き込み、その後、ファイルを閉じていること

If saveFileDialog1.ShowDialog() = DialogResult.OK Then 
     File.WriteAllText(saveFileDialog1.FileName, TextBox1_Output_Module.Text & vbCrLf & TextBox2_Output_Module.Text & vbCrLf & TextBox3_Output_Module.Text) 
    End If 

ちょうど心に留めておく()のOpenFileへの呼び出しを取り除く解決することができます。 対象ファイルがすでに存在する場合は、が上書きされます。

関連する問題