public DbgAppDomainImpl(DbgRuntimeImpl runtime, DbgInternalAppDomain internalAppDomain, string name, int id) { this.runtime = runtime ?? throw new ArgumentNullException(nameof(runtime)); InternalAppDomain = internalAppDomain ?? throw new ArgumentNullException(nameof(internalAppDomain)); this.name = name; this.id = id; }
public override DbgEngineAppDomain CreateAppDomain <T>(DbgInternalAppDomain internalAppDomain, string name, int id, DbgEngineMessageFlags messageFlags, T data, Action <DbgEngineAppDomain> onCreated) { if (disposed) { throw new ObjectDisposedException(nameof(DbgObjectFactoryImpl)); } var appDomain = new DbgAppDomainImpl(runtime, internalAppDomain, name, id); if (data != null) { appDomain.GetOrCreateData(() => data); } var engineAppDomain = new DbgEngineAppDomainImpl(appDomain); onCreated?.Invoke(engineAppDomain); owner.Dispatcher.BeginInvoke(() => owner.AddAppDomain_DbgThread(runtime, appDomain, messageFlags)); return(engineAppDomain); }
/// <summary> /// Creates an app domain. The engine has paused the program. /// </summary> /// <typeparam name="T">Type of data</typeparam> /// <param name="internalAppDomain">App domain object created by the debug engine</param> /// <param name="name">New <see cref="DbgAppDomain.Name"/> value</param> /// <param name="id">New <see cref="DbgAppDomain.Id"/> value</param> /// <param name="messageFlags">Message flags</param> /// <param name="data">Data to add to the <see cref="DbgAppDomain"/> or null if nothing gets added</param> /// <param name="onCreated">Called right after creating the app domain but before adding it to internal data structures. This can be null.</param> /// <returns></returns> public abstract DbgEngineAppDomain CreateAppDomain <T>(DbgInternalAppDomain internalAppDomain, string name, int id, DbgEngineMessageFlags messageFlags, T data, Action <DbgEngineAppDomain> onCreated = null) where T : class;
/// <summary> /// Creates an app domain. The engine has paused the program. /// </summary> /// <param name="internalAppDomain">App domain object created by the debug engine</param> /// <param name="name">New <see cref="DbgAppDomain.Name"/> value</param> /// <param name="id">New <see cref="DbgAppDomain.Id"/> value</param> /// <param name="messageFlags">Message flags</param> /// <returns></returns> public DbgEngineAppDomain CreateAppDomain(DbgInternalAppDomain internalAppDomain, string name, int id, DbgEngineMessageFlags messageFlags) => CreateAppDomain <object>(internalAppDomain, name, id, messageFlags, null, null);