public void Start() { if (this._started) { throw new InvalidOperationException("Already started."); } this._started = true; this._thread = ScriptHost.CreateThread(new ParameterizedThreadStart(this.Worker)); this._thread.Priority = ThreadPriority.BelowNormal; this._thread.SetApartmentState(ApartmentState.STA); this._thread.Start(); }