Qui è il codice che uso per chiudere la mia domanda, i suoi processi associati e per eliminare tutti i file che sono stati estratti durante l'utilizzo dell'applicazione:Come eliminare i file programmaticamente?
private void Quit_Click(object sender, RoutedEventArgs e) //close the application
{
//kill cinector after all import is done
Process[] processes = Process.GetProcesses();
for (int i = 0; i < processes.Count(); i++)
{
if (processes[i].ProcessName.ToLower().Contains("CinectorProcess"))
{
processes[i].Kill();
}
}
//also kill powerpoint just in case
for (int i = 0; i < processes.Count(); i++)
{
if (processes[i].ProcessName.ToLower().Contains("powerpnt"))
{
processes[i].Kill();
}
}
//kill the engine
ShutdownEngine();
//kill the main app
App.Current.Shutdown();
//also delete all three folders
//slides_png_prev
if (Directory.Exists(slides_png_prev))
{
Thumbnails = null;
Directory.Delete(slides_png_prev, true);
}
//slides_png
if (Directory.Exists(slides_png))
{
Directory.Delete(slides_png, true);
}
//slides_png_prev_seleect
if (Directory.Exists(slides_png_prev_seleect))
{
Directory.Delete(slides_png_prev_seleect, true);
}
}
Tuttavia, il problema è che quando si cerca per eliminare i file (che sono le immagini utilizzate da qualche parte nell'app) mostra la seguente eccezione:
"Il processo non può accedere al file perché è utilizzato da un altro processo."
Aggiornamento: Ho trovato che il processo di 'Mastersolution.vhost.exe' sta tenendo tutti i file che sto cercando di eliminare. Mastersolution è in realtà l'app principale che sto chiudendo sulla linea App.Current.Shutdown();
Quindi ho bisogno di disconnettere in qualche modo i file dall'applicazione principale prima di eliminarli. Ma zappa per fare questo?
è questa applicazione winforms/wpf/console? Uccidere il/i processo/i e gui non sembra essere il modo più bello di fare le cose .. – Sayse
questo è wpf. Per gui intendo l'applicazione principale – Ivan