Приложение автоматически завершает работу, если не запущен не фоновый поток.
Поток автоматически останавливается, когда больше нет кода для выполнения.
Итак, просто сделайте так, чтобы у вашего приложения больше не было кода для выполнения, когда вы хотите, чтобы оно завершилось.
class Program
{
static void Main()
{
ConsoleKeyInfo cki;
do
{
Console.Write("Press a key: ");
cki = Console.ReadKey(true);
Console.WriteLine();
if (cki.Key == ConsoleKey.D1)
{
Console.Write("You pressed: 1");
}
}
while (cki.Key != ConsoleKey.D2);
} // <-- application terminates here
}