Hier den Code ist, dass ich meine Anwendung, die damit verbundene Prozesse zu schließen und alle Dateien zu löschen, die während der Verwendung der Anwendung extrahiert wurden:Wie lösche ich Dateien programmatisch?
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);
}
}
Allerdings ist das Problem, dass, wenn es versucht, die Dateien (die die Bilder irgendwo in der App verwendet wird) es zeigt die folgende Ausnahme zu löschen: „der Vorgang kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird“
Update: fand ich, dass der Prozess ‚Mastersolution.vhost.exe‘ alle Dateien hält, die ich zu löschen versucht bin. Mastersolution ist eigentlich die Haupt-App, die ich auf der Leitung schließe App.Current.Shutdown();
Also muss ich irgendwie die Dateien von der Hauptanwendung trennen, bevor sie gelöscht werden. Aber hacke, das zu tun?
ist diese WinForms/wpf/Konsolenanwendung? Das Töten des Prozesses (der Prozesse) und der GUI scheint nicht der netteste Weg zu sein, Dinge zu tun. – Sayse
das ist wpf. Mit gui meine ich die Hauptanwendung – Ivan