2009-10-29 21 views
5

Sto costruendo un programma C# che decomprime un file e lavora su questo file.Come uccidere un processo C#?

A volte ottengo questo messaggio: "il processo non può accedere al file c: .... perché è utilizzato da un altro processo"

cosa posso fare? Come ucciderlo?

risposta

10

Devi scoprire quale programma sta accedendo al file. Hai dimenticato di uscire da una delle tue applicazioni o ci sono altri accessi al file?

È possibile scrivere codice C# per uccidere un processo, ma un approccio migliore sarebbe scoprire perché è già utilizzato da un altro processo.

di uccidere tutti i processi con nome nameOfProcess in C#:

Process[] ps = Process.GetProcessesByName("nameOfProcess"); 

foreach (Process p in ps) 
    p.Kill(); 

Inoltre, come nota @Darin, si potrebbe dare un'occhiata a questa discussione altri SO: How do I find out which process is locking a file using .NET?

Sysinternals strumenti è menzionato da @Darin nei commenti è trovato a http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

+2

Per scoprire chi sta bloccando il file, è necessario dare un'occhiata a ProcessMonitor da sysinternals. Basta cliccare sul cannocchiale nella barra degli strumenti e inserire il nome del file. Si ottiene un elenco di tutti i processi che hanno un handle aperto per questo file. – Oliver

2

Process Monitor funzionerà ma Process Explorer è un'applicazione molto migliore per Questo. È anche da Sysinternals che ora è di proprietà di Microsoft. Esegui Process Explorer come amministratore e quindi fai clic sul pulsante di ricerca. Questo mostrerà quindi le applicazioni e i thread che stanno usando il file.

+0

I seconda questa risposta. Questo mi ha aiutato molto nel mio debugging. – Joel

Problemi correlati