2009-05-18 20 views
25

夜間のレポートがあります。プロセスが別のプロセスで使用されているため、ファイルにアクセスできません。

時々私は例外を取得:

それが別のプロセスによって

を使用されているため、プロセスはファイルにアクセスできませんどのように私は、ファイルに上保持しているどのようなプロセス言うのですか?私はマカフィーだと思っていますが、私はそれを証明する必要があります。

+2

これはおそらくあなたのウイルス対策ではありません。それは私の経験では決してありませんでした。実際それは通常私のコードです。ファイルを開くたびに "使用する"ことを確認してください。 –

+0

スタックオーバーフローの他のポストはdllのロックです。これはテキストファイルのファイルロックです。私はusingステートメントを持っています。 –

+0

あなたのプロセスに使用しているプリンシパルのフォルダアクセス権を確認します。それは移動する権利を持っていないかもしれません。 –

答えて

19

問題は、.NETのMailMessageが添付ファイルを保持していることでした。私は添付ファイルを処理しなければならず、それがうまくいった。

0

Filemonあなたが探しているツールかもしれません。 (。どうやらFileMonのに置き換えられていたり、Process Monitor

+0

私はC#でファイルの名前を変更しようとしています。単純にfile.move(ソース、デスティネーション)を使用しますが、エラーが発生するたびに別のプロセスによってファイルが使用されます。私はasp.net、iis6を使用してWebインターフェイスを介して名前を変更しています。ありがとう – safi

1

ここに通知し、ロックされたファイルのロックを解除し、いくつかのツール(S): http://ccollomb.free.fr/unlocker/

+1

私はこれをプログラムでC#で行うことができますどのような方法ですか? –

+0

は、この重複した質問をここに発見しました:http://stackoverflow.com/questions/317071/how-do-i-find-out-which-process-is-locking-a-file-c – Kamarey

+1

他の投稿はスタックオーバーフローですDLLのロックこれはテキストファイルのファイルロックです。 –

9

Process ExplorerまたはProcess Monitorなどのツールを使用してください。

+0

私はC#でファイルの名前を変更しようとしています。単純にfile.move(source、destination)を使用しますが、エラーが発生するたびに別のプロセスがそのファイルを使用します。私はasp.net、iis6を使用してWebインターフェイスを介して名前を変更しています。ありがとう – safi

+0

@ safiあなたはこれを新しい質問にする必要があります。あなたは私にそれへのリンクをコメントすることを歓迎します... –

+0

私はこの質問をしましたが、私は適切な答えを得ていませんでした。リンクはhttp://stackoverflow.com/questions/5152841/file-renaming-problem – safi

0
  1. Process Explorer>検索> ハンドル>ファイル名を入力してください。
  2. Unlocker。それを開こうとすると、 にロックがある場合は、ロック解除が開き、ロックするプログラムが に表示されます。
+0

私はC#でファイルの名前を変更しようとしています。私は単純にfile.move(source、destination)を使用しますが、エラーは、ファイルが別のプロセスで使用されています。私はasp.net、iis6を使用してWebインターフェイスを介して名前を変更しています。ありがとう – safi

1

が確認されました。私も同様の問題があり、グレッグが言ったことをしました。メッセージを送信した後、私はちょうどそこにこれを入れfinallyブロックで

、それはファイルハンドルをリリース:

foreach(Attachment a in message.Attachments) a.Dispose(); 
+0

@Mike私はC#でファイルの名前を変更しようとしています。私は単にfile.move(source、destination)を使用しますが、エラーが発生するたびに別のプロセスがファイルを使用します。私はasp.net、iis6を使用してWebインターフェイスを介して名前を変更しています。おかげで – safi

3
Attachment data = new Attachment(@"c:\filename"); 

'send email.... 

data.Dispose();  
0

GC.Collect()処分は

+0

私の場合は、処分が十分に迅速にまたは厳密に起こっていないので、これは動作します。それはちょうど悪いと感じる。よりよい方法が必要です。 – Steve

0
それを修正する必要があります後

私はJavaプログラムを開始しようとしていて、メッセージを受け取りました。タスクマネージャを見ると、そのプロセスを終了したときにすでにJavaタスクが実行されていた(ループしていますか?)、プロセスを実行することができました。

0

私は同じ問題を抱えていましたが、私の場合、Visul Studio 2012で.mdfファイルを削除しようとしていました。これを解決するのに役立つ情報はあまりありませんでした。助けて。それから、同じような問題があっても、それは私が対処しなければならなかったプロセスとはかなり異なることに気付きました。

Windowsエクスプローラで.mdfファイルを削除しようとしていて、データベースを削除してもSQL Server 2008 R2が実際にファイルを保持しているというエラーが表示されました。私が新しいことをしたら、私はSQL Server 2008 R2をシャットダウンして、ファイルをもう一度削除しようとしました。

SQL Server 2008 R2をオン/オフする方法については、下記のリンクを参照してください。

Turn on and off SQL Server