/// <summary> /// Starts an instance of an actor. /// </summary> public override async Task StartInstance() { await this.connectionTask; if (string.IsNullOrEmpty(this.credentials.ObjectId)) { await Database.Insert(this.credentials); } Variables Variables = new Variables(); ObjectProperties Properties = new ObjectProperties(this, Variables); List <SubscriptionState> Subscriptions = new List <SubscriptionState>(); if (this.Parent is ISimulationNodeChildren Parent) { foreach (ISimulationNode Node in Parent.Children) { if (Node is Subscribe Subscribe) { SubscriptionState Subscription = new SubscriptionState() { ExtEventName = Expression.Transform(Subscribe.ExtEvent, "{", "}", Properties), Queue = Expression.Transform(Subscribe.Queue, "{", "}", Properties), Actor = this, Model = this.Model, Cancel = new ManualResetEvent(false), Stopped = new TaskCompletionSource <bool>() }; Subscription.Subscribe(Client); Subscriptions.Add(Subscription); } } } this.subscriptions = Subscriptions.ToArray(); }