سؤال

لدي شرط أحتاج فيه لإغلاق التطبيق ولذا فإنني أسمي هذا.

في البداية اعتقدت أنها مشكلة في الدعوة وظائف بعد أن أسمي هذا. ولكي نقلت () وهكذا نقلت التعليمات البرمجية ليكون آخر شيء يسمى، لكن ما زلت أحصل على "ArgumentException غير معالج" "" المعلمة غير صالحة ". على التطبيق. رون (جديد MyApp ()؛ خط.

ما الخطأ الذي افعله؟ هل افتقد شيئا على طول الطريق؟ أو ربما هناك طريقة أفضل لإغلاق التطبيق؟

هل كانت مفيدة؟

المحلول

جرب استخدام Application.Exit() للخروج من التطبيق.

عند استخدامها Application.Run(new MyForm());, ، يتم إنشاء حلقة الرسائل على مؤشر الترابط باستخدام كائن النموذج كأشكال رئيسية. يحاول تقديم رسائل Win32 التي تأتي إلى التطبيق على كائناتهم. ومع ذلك، عند الاتصال Dispose() في كائن النموذج، لم تكن خرجت عن حلقة الرسالة حتى الآن. عندما يحاول تقديم الرسالة التالية إلى كائن النموذج الخاص بك، فشل ذلك لأنه يتم التخلص منه بالفعل وطرقي الاستثناء. يجب عليك إما أن تطلب إغلاق النموذج (عن طريق الاتصال Close في النموذج)، والتي ستطلب بعد ذلك من النموذج لمعالجة الحدث وإذا اكتمال، يمكنك الخروج من حلقة الرسالة بعد ذلك. في الاتجاه الآخر (طريقة أكثر مباشرة) هو إيقاف تشغيل حلقة الرسالة على الخيط تماما عن طريق الاتصال Application.Exit() مما سيؤدي إلى إغلاق جميع النماذج ذات الصلة.

نصائح أخرى

يجب عليك استخدام هذا. close () بدلا من ذلك .Dispose () لإغلاق النموذج الرئيسي الخاص بك.

إذا كنت تغلق التطبيق وبالتالي تفريغ AppDomain، فأنت لا تحتاج حقا إلى الاتصال بالتخلص () لأن كل شيء من AppDomain ستتم إزالة من الذاكرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top