2009-05-18 55 views
25

Ho una serie di rapporti notturni.Il processo non può accedere al file perché è utilizzato da un altro processo

A volte ho l'eccezione:

Il processo non può accedere al file perché è utilizzato da un altro processo

Come faccio a dire quale processo sta tenendo al file? Penso che sia McAfee, ma ho bisogno di dimostrarlo.

+2

Solo un pensiero, probabilmente non è la protezione antivirus. Non è mai stato nella mia esperienza. In realtà è di solito il mio codice. Assicurati di aver "usato" ovunque tu apra un file. –

+0

Questo altro post su Stack Overflow è un blocco su una DLL. Questo è un blocco di file su un file di testo. Ho una dichiarazione usando. –

+0

Vorrei controllare i diritti di accesso alla cartella per qualsiasi entità che si sta utilizzando per il processo. Potrebbe non avere i diritti per spostarlo, basta solo leggere l'accesso. –

risposta

19

Il problema era che MailMessage in .NET teneva gli allegati. Ho dovuto smaltire l'allegato e poi ha funzionato.

0

Filemon potrebbe essere lo strumento che stai cercando.

(o anche Process Monitor che a quanto pare ha sostituito FileMon.)

+0

Sto provando a rinominare un file in C#, io uso semplicemente file.move (fonte, destinazione) ma ogni volta che provo ho un errore il file è usato da un altro processo. sto rinominando un'interfaccia web tramite asp.net, iis6. grazie – safi

1

qui qualche strumento (s), che racconta e sbloccare i file bloccati: http://ccollomb.free.fr/unlocker/

+1

In qualsiasi modo posso farlo a livello di codice in C#? –

+0

ha trovato questa domanda duplicata qui: http://stackoverflow.com/questions/317071/how-do-i-find-out-which-process-is-locking-a-file-c – Kamarey

+1

Quell'altro post su Stack Overflow è un blocco su una DLL. Questo è un blocco di file su un file di testo. –

9

utilizzare uno strumento come Process Explorer o Process Monitor.

+0

Sto provando a rinominare un file in C#, io uso semplicemente file.move (fonte, destinazione) ma ogni volta che provo ho un errore il file è usato da un altro processo. sto rinominando un'interfaccia web tramite asp.net, iis6. grazie – safi

+0

@safi Devi fare una nuova domanda. Non esitate a commentare un link ad esso ... –

+0

ho fatto questa domanda, ma non ho avuto una risposta appropriata. il collegamento è http://stackoverflow.com/questions/5152841/file-rename-problem – safi

0
  1. Process Explorer> Trova> Trova Handle> digitare il nome del file.
  2. Unlocker. Prova ad aprirlo, se è ha un lucchetto, lo sblocco si apre e mostra i programmi che lo bloccano.
+0

Sto provando a rinominare un file in C#, io uso semplicemente file.move (fonte, destinazione) ma ogni volta che provo ottengo un errore il file è utilizzato da un altro processo. sto rinominando un'interfaccia web tramite asp.net, iis6. grazie – safi

1

Confermato. Ho avuto un problema simile e ho fatto quello che ha detto Greg.

In finally blocco dopo l'invio del messaggio, ho appena messo questo in là, e ha liberato il file gestisce:

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

@Mike Sto provando a rinominare un file in C#, io uso semplicemente file.move (fonte, destinazione) ma ogni volta che provo ho un errore il file è usato da un altro processo. sto rinominando un'interfaccia web tramite asp.net, iis6. grazie – safi

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

'send email.... 

data.Dispose();  
0

GC.Collect() dopo la smaltire dovrebbe risolvere il problema

+0

questo funziona nel mio caso poiché le disposizioni non stanno accadendo abbastanza velocemente o rigorosamente. mi fa solo male. ci deve essere un modo migliore. – Steve

0

Stavo cercando di avviare un programma Java e ho ricevuto il messaggio. Guardando in Task Manager, c'era già un'attività Java in esecuzione (looping?) Quando ho ucciso quel processo, il mio processo era in grado di funzionare.

0

Ho appena avuto lo stesso problema ma nel mio caso stavo cercando di eliminare un file .mdf in Visul Studio 2012. Non c'erano molte informazioni sull'errore dato per aiutarmi a risolvere questo e così sono venuto qui cercando Aiuto. Poi ho capito che anche se è un problema simile, era piuttosto un processo diverso che dovevo affrontare.

Quello che ho fatto è stato cercare di eliminare il file .mdf in Windows Explorer e quindi mi ha dato un errore che SQL Server 2008 R2 stava in realtà tenendo premuto il file anche se avevo il database cancellato. Una volta arrivato a quello nuovo, tutto quello che dovevo fare era chiudere SQL Server 2008 R2 e provare a cancellare di nuovo il file e ha funzionato.

Se sono necessarie istruzioni su come accendere e spegnere SQL Server 2008 R2, vedere il collegamento riportato di seguito.

Turn on and off SQL Server

Problemi correlati