سؤال

وأستخدمه VSTS 2008 + صافي 3.5 + C # لتطوير تطبيق نماذج Windows. ارتباكي هو، يبدو Application.Exit لا يجبر التطبيق لإنهاء؟ إذا لم يكن كذلك، الطريقة التي ينبغي أن أدعو لجعل التطبيق إنهاء؟

وتحرير 1:

وعادة الأسلوب الرئيسي هو من هذا القبيل، وكيفية الخروج من الوظيفة الرئيسية برشاقة دون استدعاء Environment.Exit؟

    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        try
        {
            Application.Run(new Form1());
        }
        catch (Exception ex)
        {
            Console.WriteLine (ex.Message);
        }
    }

ويرجع الفضل في ذلك مسبقا، جورج

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

المحلول

وApplication.Exit حقا يسأل مجرد حلقة رسالة بلطف شديد.

إذا كنت تريد التطبيق للخروج، وأفضل وسيلة لجعل برشاقة عليه للخروج من Main، ونظيفة إغلاق أي المواضيع غير الخلفية إضافية.

إذا كنت تريد أن تكون وحشية ... Environment.Exit Environment.FailFast ؟ <قوية> ملاحظة هذا هو قاسية - تقريبا نفس قتل Process بنفسك

نصائح أخرى

وحاول القيام بما يلي:

Process.GetCurrentProcess().Kill();

وEnvironment.Exit لا يعمل مع WinForms عناصر وEnvironment.FailFast يلقي استثناء الخاصة به.

إذا طلبك لا خروج برشاقة عند استدعاء Application.Exit هناك (من الواضح) ما يمنعها من القيام بذلك. وهذا يمكن أن يكون أي شيء من e.Cancel = true وضع النموذج في الحدث FormClosing، إلى موضوع هذا ليس موضوع الخلفية التي لا يزال قيد التشغيل. وأود أن المشورة لك للبحث عن بعناية بالضبط ما هو عليه أن يبقي عملية على قيد الحياة، وإغلاق هذا بطريقة لطيفة. وينبغي أن يجعل التطبيق الخاص بك يغلق بشكل جيد أيضا.

وعادة، في تطبيق WinForms عناصر، فإنه ينبغي أن يكون كافيا لإغلاق النموذج الرئيسي.

وأنا استخدم

if (System.Windows.Forms.Application.MessageLoop)
{
   // Use this since we are a WinForms app
   System.Windows.Forms.Application.Exit();
}
else
{
   // Use this since we are a console app
   System.Environment.Exit(1);
}

http://geekswithblogs.net/mtreadwell/archive/ 2004/06/06 / 6123.aspx

وكان لي نفس المشكلة عندما اكتشفت فتح نموذج / نافذة جديدة ضمن البرنامج، وفقط إخفاء هذا الشكل الثاني (وليس إغلاقه)، من شأنه أن يمنع النموذج الرئيسي من الإقلاع عن التدخين بشكل صحيح عبر Application.Exit ()؛

وهناك نوعان من الحلول في هذه الحالة. الأول هو ببساطة استخدام إغلاق () في النموذج الرئيسي بدلا من Application.Exit (). الحل الثاني هو استخدام التعليمات البرمجية التالية:

if (secondForm != null && !secondForm.IsDisposed) secondForm.Dispose();

ولقد وجدت أن مجرد كل ما عليك القيام به هو بدلا من القيام application.exit وكل ما عليك هو وضع في القيام به النهاية ببساطة يغلق يكفي الأمر وضع حد لها

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