protected override void ProcessRecord() { base.ProcessRecord(); ExecutionResult result; if (Thread.CurrentThread.GetApartmentState() == this.Apartment) { result = ExecuteExpression(this.Expression); } else { var ApartmentThread = new System.Threading.Thread(StartExecuteExpression); ApartmentThread.SetApartmentState(this.Apartment); var Parameters = new ExecutionParameters { Expression = this.Expression }; ApartmentThread.Start(Parameters); ApartmentThread.Join(); result = Parameters.Result; } if (result == null) throw new InvalidOperationException("No result returned."); if (result.Error != null) throw result.Error; if (result.Output != null) WriteObject(result.Output); }
protected override void ProcessRecord() { base.ProcessRecord(); ExecutionResult result; if (Thread.CurrentThread.GetApartmentState() == this.Apartment) { result = ExecuteExpression(this.Expression); } else { var ApartmentThread = new System.Threading.Thread(StartExecuteExpression); ApartmentThread.SetApartmentState(this.Apartment); var Parameters = new ExecutionParameters { Expression = this.Expression }; ApartmentThread.Start(Parameters); ApartmentThread.Join(); result = Parameters.Result; } if (result == null) { throw new InvalidOperationException("No result returned."); } if (result.Error != null) { throw result.Error; } if (result.Output != null) { WriteObject(result.Output); } }