اغلاق تطبيق WPF من App.xaml.cs
-
03-07-2019 - |
سؤال
وأنا أكتب حاليا تطبيق WPF التي لا حجة سطر الأوامر معالجة في App.xaml.cs (وهو أمر ضروري لأن الحدث بدء التشغيل ويبدو أن الطريقة الموصى بها للحصول على تلك الحجج). واستنادا إلى الحجج أريد أن الخروج من البرنامج عند هذه النقطة بالفعل الذي، بقدر ما أعرف، وينبغي أن يتم في WPF مع Application.Current.Shutdown()
أو في هذه الحالة (وأنا في كائن التطبيق الحالي) وربما أيضا this.Shutdown()
فقط.
والمشكلة الوحيدة هي أن هذا لا يبدو أن الحق في العمل. لقد خرج من مع المصحح ورمز بعد السطر Shutdown()
لا يزال يعدم الأمر الذي يؤدي إلى أخطاء بعد ذلك في الأسلوب، منذ كنت أتوقع التطبيق لا أن يعيش فترة طويلة. أيضا الإطار الرئيسي (أعلن في سمة StartupUri في XAML) لا يزال يحصل على تحميل.
ولقد دققت في وثائق هذه الطريقة وجدت شيئا في تصريحات أن تقول لي أن لا ينبغي لي أن استخدامه أثناء Application.Startup
أو Application
على الإطلاق.
وهكذا، ما هو الطريق الصحيح للخروج من البرنامج في تلك المرحلة، ط. ه. معالج الأحداث Startup
في كائن Application
؟
المحلول
وإزالة أولا الممتلكات StartupUri من App.xaml ثم استخدم ما يلي:
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
bool doShutDown = ...;
if (doShutDown)
{
Shutdown(1);
return;
}
else
{
this.StartupUri = new Uri("Window1.xaml", UriKind.Relative);
}
}
نصائح أخرى
إذا قمت بإزالة StartupUri من app.xaml للتطبيق مع MainWindow كنت بحاجة للتأكد من إجراء المكالمة التالية في طريقة OnStartup بك وإلا لن إنهاء التطبيق عندما يغلق MainWindow الخاص بك.
this.ShutdownMode = System.Windows.ShutdownMode.OnMainWindowClose;
وFrank Schwieterman، شيء على طول هذه الخطوط قد تساعدك مع قضية إطار وحدة التحكم الخاصة بك.