Завершение работы приложения в MonoMac

Я пытаюсь закрыть приложение MonoMac с помощью Environment.Exit(0). Однако этот звонок почему-то не возвращается. Он также не генерирует исключение. Когда я выполняю функцию в ближайшем окне в MonoDevelop, время ожидания истекает.

Я понятия не имею, как подойти к отладке этого. Я думал, что Environment.Exit убивает процесс...


person sohum    schedule 20.10.2011    source источник


Ответы (2)


Вы должны использовать NSApplication Вместо этого используйте метод .Terminate.

Обратите внимание, что этот метод может вызвать делегат приложения (если он определен) для подтверждения завершения (см. NSApplicationDelegate.ApplicationShouldTerminate).

person Laurent Etiemble    schedule 21.10.2011
comment
Сладко, это сработало отлично. Я вызвал NSApplication.SharedApplication.Terminate(this) в своем контроллере. - person sohum; 21.10.2011

Вы можете добавить две функции переопределения в AppDelegate.cs.

public override NSApplicationTerminateReply ApplitionShouldTerminate(NSApplication sender) 
{
    mainWindowController.Window.Close();
    return NSApplicationTerminateReply.Now;
}

public override bool ApplicationShouldTerminateAfterLastWindowClosed(NSApplication sender)
{
    return true;
}
person Utmost    schedule 07.11.2012