C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

OpenFileDialogから読み込んだファイル参照を解放したい


(過去ログ 8 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■8166 / inTopicNo.1)  OpenFileDialogから読み込んだファイル参照を解放したい
  
□投稿者/ Kan 二等兵(1回)-(2006/11/08(Wed) 18:04:28)

分類:[C#] 


分類:[C#] 

初めまして。
cmd1を押すと
OpenFileDialogから指定したファイルの情報を取得し、
更にcmd2を押すと、そのファイルのあるフォルダの名前を変更するという処理をしたいと思っています。

以下のソースで、ファイルの指定はできたのですが、
cmd1_click終了の時点でも、ファイルの参照を解放していないので、名前が変えられませんでした。

ファイルの参照を解除することは可能でしょうか??
dlgFile.Reset(); 
dlgFile.Dispose();
など入れてみましたが、相変わらず参照しているようです。


cmd1_click(object sender, System.EventArgs e)
{
OpenFileDialog dlgFile = new OpenFileDialog();
dlgFile.Filter = "XMLファイル(*.xml)|*.xml|すべてのファイル(*.*)|(*.*)";
      // ここでD:\hoge\aa\test.txt 指定
if (dlgFile.ShowDialog() == DialogResult.OK)
{
dlgFile.Reset(); 
dlgFile.Dispose();
}
}
cmd2_click(object sender, System.EventArgs e)
{
System.IO.Directory.Move("D:\hoge\aa", "D:\hoge\aa1"); //←まだ参照しているためエラー
}

0
引用返信 編集キー/
■8167 / inTopicNo.2)  Re[1]: OpenFileDialogから読み込んだファイル参照を解放したい
□投稿者/ Pandora 二等兵(4回)-(2006/11/08(Wed) 18:33:39)

分類:[C#] 

> ファイルの参照を解除することは可能でしょうか??

 ロック等はしていないと思うのですが...

 どんなエラーがでているのですか?


0
引用返信 編集キー/
■8168 / inTopicNo.3)  Re[1]: OpenFileDialogから読み込んだファイル参照を解放したい
□投稿者/ 魔界の仮面弁士 中佐(202回)-(2006/11/08(Wed) 18:56:18)

分類:[C#] 

No8166に返信(Kanさんの記事)
> 更にcmd2を押すと、そのファイルのあるフォルダの名前を変更するという処理をしたいと思っています。

そこが「カレント ディレクトリ」になっていた…という事はありませんか?

0
引用返信 編集キー/
■8169 / inTopicNo.4)  Re[2]: OpenFileDialogから読み込んだファイル参照を解放したい
□投稿者/ Kan 二等兵(2回)-(2006/11/08(Wed) 20:01:16)

分類:[C#] 

Pandora様、魔界の仮面弁士様、レスありがとうございます。

>ロック等はしていないと思うのですが...
>どんなエラーがでているのですか?

cmd2を押すと、Moveのところで「そのプロセスは現在使用されています」というエラーが出ます。(今環境がないので、正確なメッセージ内容でなくてすみません)

OpenFileDialogから無造作にファイルを選んでいるだけの処理なので、カレントディレクトリにはなっていませんです。


貼り付けたソースは、テスト用に作成したものをほぼそのまま持ってきたのですが、
自分の環境では、
cmd1を押した後に、エクスプローラからOpenFileDialogを使って指定したファイルが含まれているフォルダをリネームしようとしても、他の人が使用していますとエラーメッセージが出てリネームできませんでした。
exeから起動して、cmd1は実行せずに、cmd2だけ押すとリネームされました。


現在はデバッグモードで検証しています。
環境は、WindowsXPで、SP2が当たってたと思います。
VisualStudio 2005 使用です。


0
引用返信 編集キー/
■8175 / inTopicNo.5)  Re[3]: OpenFileDialogから読み込んだファイル参照を解放したい
□投稿者/ 魔界の仮面弁士 中佐(203回)-(2006/11/08(Wed) 22:42:55)

分類:[C#] 

No8169に返信(Kanさんの記事)
> OpenFileDialogから無造作にファイルを選んでいるだけの処理なので、カレントディレクトリにはなっていませんです。
ではその時、カレントディレクトリはどのディレクトリを指していましたか?

openFileDialog1.ShowDialog();
MessageBox.Show(System.IO.Directory.GetCurrentDirectory());

0
引用返信 編集キー/
■8176 / inTopicNo.6)  Re[2]: OpenFileDialogから読み込んだファイル参照を解放したい
□投稿者/ Pandora 二等兵(5回)-(2006/11/09(Thu) 00:37:25)

分類:[C#] 

No8167に返信(Pandoraさんの記事)
>>ファイルの参照を解除することは可能でしょうか??
>  ロック等はしていないと思うのですが...
>  どんなエラーがでているのですか?

  すみません。
  てっきりファイル名の変更と思っていたので、この回答をしてしまいました。

  フォルダ名の変更をしたかったのですね。

  それであれば、選択したフォルダにカレントが移動してしまっているので排他のエラーがでると思います。

  カレントフォルダを起動時のフォルダに戻すようにすればこの問題は解決すると思います。

  設定としては、下記の1文を追加して頂ければと思います。

  dlgFile.RestoreDirectory = true;


0
引用返信 編集キー/
■8180 / inTopicNo.7)  解決しました
□投稿者/ Kan 二等兵(3回)-(2006/11/09(Thu) 09:22:03)

分類:[C#] 

すみません、確認してみたら、魔界の仮面弁士様のおっしゃるとおり、
名前を変更したいフォルダが、カレントディレクトリになっていました。
Pandora様が教えてくださったdlgFile.RestoreDirectory = true;を
if (dlgFile.ShowDialog() == DialogResult.OK)
の前に入れることでカレントディレクトリが移動し、フォルダ名の変更に成功しました。

説明等、わかりにくい部分があったようで済みません。
ファイルを参照していたのではなくてフォルダに排他がかかっていたのですね
ありがとうございました。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -