Application
using Autodesk.DesignScript.Geometry.Properties;
using Autodesk.DesignScript.Interfaces;
using Autodesk.DesignScript.Runtime;
using System;
using System.Collections.Generic;
namespace Autodesk.DesignScript.Geometry
{
[SupressImportIntoVM]
public class Application : IExtensionApplication
{
private static Application mInstance;
private List<IDisposable> mToBeDisposedObjects = new List<IDisposable>();
private IExecutionSession mSession;
internal IExecutionSession Session => mSession;
public static Application Instance {
get {
if (mInstance == null)
mInstance = new Application();
return mInstance;
}
}
public bool IsExecuting => mSession != null;
private Application()
{
mInstance = this;
}
void IExtensionApplication.OnBeginExecution(IExecutionSession session)
{
mSession = session;
if (HostFactory.Instance != null && !HostFactory.ExtensionApplicationStarted) {
foreach (IExtensionApplication extensionApplication in HostFactory.ExtensionApplications) {
extensionApplication?.OnBeginExecution(session);
}
HostFactory.ExtensionApplicationStarted = true;
}
GeometrySettings.Reset();
GeometrySettings.RootModulePath = session.Configuration.RootModulePath;
}
void IExtensionApplication.OnEndExecution(IExecutionSession session)
{
if (HostFactory.Instance != null && HostFactory.ExtensionApplicationStarted) {
foreach (IExtensionApplication extensionApplication in HostFactory.ExtensionApplications) {
extensionApplication?.OnEndExecution(session);
}
HostFactory.ExtensionApplicationStarted = false;
}
if (mSession != null && mSession != session)
throw new InvalidOperationException(Resources.SessionMismatchException);
IDisposable[] array = null;
lock (mToBeDisposedObjects) {
array = mToBeDisposedObjects.ToArray();
mToBeDisposedObjects.Clear();
}
IDisposable[] array2 = array;
foreach (IDisposable disposable in array2) {
disposable.Dispose();
}
mSession = null;
}
void IExtensionApplication.OnSuspendExecution(IExecutionSession session)
{
}
void IExtensionApplication.OnResumeExecution(IExecutionSession session)
{
}
public void StartUp(ExtensionStartupParams extParams)
{
}
[Obsolete("This method is deprecated and will be removed in a future version of Dynamo. Please use StartUp with ExtensionStartupParams argument instead.")]
public void StartUp()
{
}
public void ShutDown()
{
}
public void PreloadAsmLibraries(string baseDirectory)
{
}
}
}