Если при Application.Exit идёт вылет, то посмотрите на событие FormClosing. Видимо в нём что-то делается, а вообще запустите в дебаг режиме и покажите полностью ошибку.
PS: В качестве костыля можете использовать Environment.Exit(0);
public Form1()
{
InitializeComponent();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}
private void button1_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void button2_Click(object sender, EventArgs e)
{
Environment.Exit(0);
}