diff options
author | Lluis Sanchez <llsan@microsoft.com> | 2021-05-19 11:18:52 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-19 11:18:52 +0300 |
commit | b7d4d9f9594e30955449c4be493af65e7623c729 (patch) | |
tree | eed858e3a2f7e0556fbfdb10f42a80106a9d1cd1 | |
parent | 9cffa4fa0299feeb0bcb4ea8ff498db4677db16b (diff) | |
parent | 9768deb6071431ba4cf918f9c3aa92ccf504cf35 (diff) |
Merge pull request #1055 from mono/exit-with-code
Allow specifying an exit code when exiting the application
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/MacEngine.cs | 8 | ||||
-rw-r--r-- | Xwt/Xwt.Backends/ToolkitEngineBackend.cs | 8 | ||||
-rw-r--r-- | Xwt/Xwt/Application.cs | 11 |
3 files changed, 27 insertions, 0 deletions
diff --git a/Xwt.XamMac/Xwt.Mac/MacEngine.cs b/Xwt.XamMac/Xwt.Mac/MacEngine.cs index f487e79d..84985143 100644 --- a/Xwt.XamMac/Xwt.Mac/MacEngine.cs +++ b/Xwt.XamMac/Xwt.Mac/MacEngine.cs @@ -155,6 +155,14 @@ namespace Xwt.Mac NSApplication.SharedApplication.Terminate(appDelegate); } + public override void ExitApplication(int exitCode) + { + if (exitCode == 0) + NSApplication.SharedApplication.Terminate(appDelegate); + else + Environment.Exit(exitCode); + } + static Selector hijackedSel = new Selector ("hijacked_loadNibNamed:owner:"); static Selector originalSel = new Selector ("loadNibNamed:owner:"); diff --git a/Xwt/Xwt.Backends/ToolkitEngineBackend.cs b/Xwt/Xwt.Backends/ToolkitEngineBackend.cs index e36a5f74..e3181dc4 100644 --- a/Xwt/Xwt.Backends/ToolkitEngineBackend.cs +++ b/Xwt/Xwt.Backends/ToolkitEngineBackend.cs @@ -123,6 +123,14 @@ namespace Xwt.Backends public abstract void ExitApplication (); /// <summary> + /// Exits the main GUI loop with an exit code + /// </summary> + public virtual void ExitApplication(int exitCode) + { + ExitApplication(); + } + + /// <summary> /// Releases all resource used by the <see cref="Xwt.Backends.ToolkitEngineBackend"/> object. /// </summary> public virtual void Dispose () diff --git a/Xwt/Xwt/Application.cs b/Xwt/Xwt/Application.cs index 50e66313..649a517e 100644 --- a/Xwt/Xwt/Application.cs +++ b/Xwt/Xwt/Application.cs @@ -174,6 +174,17 @@ namespace Xwt } /// <summary> + /// Exits the Xwt application. + /// </summary> + public static void Exit(int exitCode) + { + toolkit.InvokePlatformCode(() => engine.ExitApplication(exitCode)); + + if (SynchronizationContext.Current is XwtSynchronizationContext) + XwtSynchronizationContext.Uninstall(); + } + + /// <summary> /// Releases all resources used by the application /// </summary> /// <remarks>This method must be called before the application process ends</remarks> |