لم يتم إغلاق تطبيق WPF بشكل صحيح
-
03-07-2019 - |
سؤال
وأنا أدعو Application.Current.Shutdown()
من الفئة التي لا بد أن النوافذ XAML مع ObjectDataProvider
، لكن التطبيق لا تغلق. يمكن لأي شخص أن يساعدني على فهم لماذا؟ طلبي لا تغلق تماما بعد إغلاق الإطار الرئيسي لي، فإنه لا تختفي من قائمة عملية إدارة المهمة.
المحلول
هل إنشاء أي المواضيع للقيام معالجة الخلفية؟ إذا كان لديك، تأكد من تعيين الخاصية .IsBackground
عليها، أو أنها يمكن أن تبقي على التطبيق تشغيل
نصائح أخرى
وحاول Environment.Exit(0)
بدلا
لا تنس أن تضيف هذا:
private void Window_Closed(object sender, EventArgs e)
{
Application.Current.Shutdown();
}
وآمل أن يساعد هذا.
إذا كان لديك العديد من النوافذ أو مربعات الحوار في التطبيق الخاص بك، قد تحتاج إلى إغلاق كل واحدة بشكل واضح.
والحوارات وثيقة مع:
<اقتباس فقرة>و_myDialog.Close ()؛
اقتباس فقرة>وإغلاق جميع النوافذ:
foreach(var window in Application.Current.Windows.ToList())
{
window.Close();
}
وكان لي نفس المشكلة، وعملية التطبيق لا تتوقف على الرغم من أن تطبيق مغلقة.
في حالتي فتحت نافذة من BackgroundWorker (رمز أدناه)
BackgroundWorker BG = new BackgroundWorker();
BG.DoWork += new DoWorkEventHandler(BG_DoWork);
StockMinWindow MinWindow = new StockMinWindow(null); -------- this is the problem
BG.RunWorkerAsync();
وinstanciate النافذة قبل تشغيل BackgroundWorker يبدو عدم المشكلة ولكن عن طريق محو خط إغلاق التطبيق بشكل صحيح
وأفتح نافذتي من BackgroundWorker ولكن باستخدام الموضوع الرئيسي (رمز أدناه)
View.Dispatcher.BeginInvoke(new Action(delegate()
{
StockMinWindow MinWindow = new StockMinWindow(StockMinList);
MinWindow.Owner = View;
MinWindow.ShowDialog();
}));
ونأمل أن يساعد.
وكان لي مشكلة حيث أن التطبيق لا تغلق حتى عندما تم إغلاق النافذة الرئيسية. واتضح كنت قد فعلت إخفاء () على شاشة البداية بدلا من إغلاق () لذلك كان لا يزال كامنا في الخلفية الحفاظ على تطبيق قيد الحياة.