यहाँ कोड है कि मैं अपने अनुप्रयोग को बंद करने के लिए उपयोग करते हैं, इससे संबंधित प्रक्रियाओं और सभी फ़ाइलें आवेदन के उपयोग के दौरान निकाले दिया है को नष्ट करने के लिए है:प्रोग्रामिंग रूप से फ़ाइलों को कैसे हटाएं?
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);
}
}
हालांकि, समस्या यह है जब यह कोशिश करता है फ़ाइलों को हटाने के लिए (जो ऐप में कहीं भी इस्तेमाल की गई छवियां हैं) यह निम्नलिखित अपवाद दिखाता है:
"प्रक्रिया फ़ाइल तक नहीं पहुंच सकती क्योंकि यह किसी अन्य प्रक्रिया द्वारा उपयोग की जा रही है।"
अद्यतन: मैंने पाया कि प्रक्रिया 'Mastersolution.vhost.exe' सभी फाइलों कि मैं को हटाने का प्रयास कर रहा हूँ कर रहा है। मास्टर्सोल्यूशन वास्तव में मुख्य ऐप है जिसे मैं लाइन App.Current.Shutdown();
पर बंद कर रहा हूं इसलिए मुझे फ़ाइलों को हटाने से पहले मुख्य एप्लिकेशन से फाइलों को डिस्कनेक्ट करने की आवश्यकता है। लेकिन यह करने के लिए दुःख?
यह Winforms/wpf/console अनुप्रयोग है? प्रक्रिया को मारना (एस) और गुई चीजों को करने का सबसे अच्छा तरीका प्रतीत नहीं होता .. – Sayse
यह wpf है। गुई द्वारा मेरा मतलब है कि मुख्य आवेदन – Ivan