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

指定されたファイルが現在使用されているかどうかを知るには??

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

指定したファイルが現在アプリケーションなどに使用されているか
調べるにはどうしたらいいですか??
教えてください。
■No6707に返信(オーシャンさんの記事)
> 指定したファイルが現在アプリケーションなどに使用されているか
> 調べるにはどうしたらいいですか??
> 教えてください。

普通に開いてみて、開けれなかったら使用されてる、という方法では
ダメでしょうか?

メモ帳などで開いたりしている場合は、
ファイルにロックがかけられていないので
開けてしまいますが・・・。
使用しているファイルに上書きするので落ちてしまいます。
> メモ帳などで開いたりしている場合は、
> ファイルにロックがかけられていないので
> 開けてしまいますが・・・。
>
はできないみたいなんです。
2004/10/15(Fri) 13:23:18 編集(投稿者)

■No6718に返信(オーシャンさんの記事)
> > メモ帳などで開いたりしている場合は、
> > ファイルにロックがかけられていないので
> > 開けてしまいますが・・・。

> はできないみたいなんです。

自作のプログラムから、開いている場合はロックできます。

しかし、他のプログラムから開かれている場合、
例えば、Explorerからメモ帳を用いて開いている場合は不可能です。

プロセスの情報を見ても、あまり確実とは言えませんし。

> 使用しているファイルに上書きするので落ちてしまいます。

これの意味が良く判りませんでした。
ロックされていないのならば、「落ちる」ことはないと思うのですが...
たとえロックされていても、例外は発生するでしょうが、即座に「落ちる」とは考えられません。
プログラムの内容としてはPDFを作成して
PDFを表示するプログラムなので
一度プログラムを実行し
また実行すると落ちます。

落ちるところとしては使用しているコンポーネントの中で
PDFを保存する所があるのですがそこで、
”このファイルは別のプロセスが使用中です。”
と表示されて落ちてしまうので、
使用されているか知りたいのです。
■No6720に返信(オーシャンさんの記事)
> プログラムの内容としてはPDFを作成して
> PDFを表示するプログラムなので
> 一度プログラムを実行し
> また実行すると落ちます。

あれ? 開放してないのは問題ないのでしょうか?

> 落ちるところとしては使用しているコンポーネントの中で
> PDFを保存する所があるのですがそこで、
> ”このファイルは別のプロセスが使用中です。”

ということは、ちゃんと「ロック」されているってことですね。

> と表示されて落ちてしまうので、
> 使用されているか知りたいのです。

そういうレヴェルなのでしたら、何故 raki さんの、

rakiさんの記事:------------------------------------------------------------

> 普通に開いてみて、開けれなかったら使用されてる、という方法では
> ダメでしょうか?

--------------------------------------------------------------------------

を無視するのでしょうか? もしかして例外処理をご存知ないとか?

PDFを作成するということは、既にあるファイルを上書きするってことですよね?
それならば、無理矢理開放しちゃってもいいのではないでしょうか?

そもそも、勝手に上書きしてもいいのかな?
まあ、ユーザに「問い合わせ」を表示するのが一番楽で無難そうですが。
> あれ? 開放してないのは問題ないのでしょうか?

すみません。開放はどのようにやるのでしょうか?

>>普通に開いてみて、開けれなかったら使用されてる、という方法では
>>ダメでしょうか?
> を無視するのでしょうか? もしかして例外処理をご存知ないとか?
>
> PDFを作成するということは、既にあるファイルを上書きするってことですよね?
> それならば、無理矢理開放しちゃってもいいのではないでしょうか?
>
> そもそも、勝手に上書きしてもいいのかな?
> まあ、ユーザに「問い合わせ」を表示するのが一番楽で無難そうですが。

>>普通に開いてみて、開けれなかったら使用されてる、という方法。
開けれなかったらというのは例外処理のことでいいのでしょうか?
また例外処理はどのようコーディングすればよいのですか?
■No6816に返信(オーシャンさんの記事)
> すみません。開放はどのようにやるのでしょうか?

そのような状態で、ファイル処理をするのは無謀です。
そして、このご質問の回答は、何を用いてファイルを開いているかに因ります。

> 開けれなかったらというのは例外処理のことでいいのでしょうか?
> また例外処理はどのようコーディングすればよいのですか?

最近、自分が検索エンジンと化してるような気がします。
今後、調べる「クセ」がつくと信じてやっております。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcn7/html/vacontrycatchstatements.asp
> そのような状態で、ファイル処理をするのは無謀です。
> そして、このご質問の回答は、何を用いてファイルを開いているかに因ります。

何をというのは、APIのことでいいのでしょうか?
APIでしたら
Process.Start(fileName);
です。
すみません。人に頼りすぎですね
例外処理は自分で調べますm(_ _)m
■No6819に返信(オーシャンさんの記事)
>>そのような状態で、ファイル処理をするのは無謀です。
>>そして、このご質問の回答は、何を用いてファイルを開いているかに因ります。
>
> 何をというのは、APIのことでいいのでしょうか?
> APIでしたら
> Process.Start(fileName);
> です。
> すみません。人に頼りすぎですね
> 例外処理は自分で調べますm(_ _)m
>
解決済み!

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