/// <summary> /// 获取或创建当前AppDomain下的FlowRunner实例 /// </summary> /// <returns></returns> protected static void SetInstance(TestflowRunner runnerInstance) { lock (_instLock) { if (null != _runnerInst && ReferenceEquals(_runnerInst, runnerInstance)) { throw new TestflowRuntimeException(-1, "A flowrunner instance with different option exist."); } _runnerInst = runnerInstance; } }
/// <summary> /// 销毁当前Runner /// </summary> public virtual void Dispose() { _runnerInst = null; DesignTimeService?.Dispose(); RuntimeService?.Dispose(); EngineController?.Dispose(); DataMaintainer?.Dispose(); SequenceManager?.Dispose(); ComInterfaceManager?.Dispose(); ResultManager?.Dispose(); ParameterChecker?.Dispose(); LogService?.Dispose(); ConfigurationManager?.Dispose(); }
/// <summary> /// 获取或创建当前AppDomain下的FlowRunner实例 /// </summary> /// <param name="options">FlowRunner的选项配置</param> /// <returns></returns> public static TestflowRunner GetInstance(TestflowRunnerOptions options) { CheckIfExistDifferentRunner(options); if (null != _runnerInst) { return(_runnerInst); } lock (_instLock) { Thread.MemoryBarrier(); CheckIfExistDifferentRunner(options); if (null != _runnerInst) { _runnerInst = GenerateFlowRunner(options); } } return(_runnerInst); }
static TestflowRunner() { _instLock = new object(); _runnerInst = null; }