Это класс программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TestClosingApp
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
Console.WriteLine("I AM AT THE END OF THE MAIN");
}
}
}
теперь, когда я нажимаю кнопку «X», чтобы закрыть форму, это то, что я вижу в выводе vs 2015
I AM AT THE END OF THE MAIN
Exception thrown: 'System.Runtime.InteropServices.COMException' in System.Windows.Forms.dll
The thread 0x1c34 has exited with code 0 (0x0).
The thread 0x2008 has exited with code 0 (0x0).
Но это все еще не завершает приложение, кажется, что процесс все еще открыт в визуальной студии, поскольку кнопка «красный квадрат», также известная как «остановить отладку», все еще ждет нажатия. Когда я нажимаю ее, я получаю следующее сообщение:
The program '[8216] TestClosingApp.vshost.exe' has exited with code -1 (0xffffffff).
Интересно, что если я выйду из Windows и вернусь, проблема исчезнет, перезапуск Visual Studio не решит проблему.
COMException
. Это, вероятно, приводит к тому, что приложение не закрывается. Можете ли вы поделиться происхождением этого исключения? - person Patrick Hofman   schedule 23.01.2017