コード例 #1
0
 protected virtual void OnTraceState(TraceInfo traceInfo, ExecuteState state, ExecuteResult result = null)
 {
     _ = traceInfo ?? throw new ArgumentNullException(nameof(traceInfo));
     traceInfo.State  = state;
     traceInfo.Result = result;
     traceService.TraceState(traceInfo);
 }
コード例 #2
0
ファイル: SerialClient.cs プロジェクト: A1X71/twilight
        /// <summary>
        /// 执行步骤
        /// </summary>
        private static void ExecuteStep()
        {
            NTP request = null;

            switch (CurrentExecuteState)
            {
            case ExecuteState.SetInvalidType:                       //获取控制器类型
                request = NTPBuildRequest.GetControllerTypeRequest();
                SendCommand(request);
                break;

            case ExecuteState.SetOver:                              //单步完成  发送 发送完毕 指令
                request = NTPBuildRequest.GetSendOverRequest();
                SendCommand(request);
                break;

            case ExecuteState.SetState:                             //发送请求指令 如果没有请求 结束
                if (CurrentNTPList != null && CurrentNTPList.Count > 0)
                {
                    request = CurrentNTPList[0];
                    SendCommand(request);
                }
                else
                {
                    CurrentFinishState  = FinishState.Succeessed;
                    CurrentExecuteState = ExecuteState.Untreated;
                }
                break;
            }
        }
コード例 #3
0
        /// <summary>
        /// Execute a fraction of the iterations for a profile.
        /// </summary>
        /// <typeparam name="T">The profile type.</typeparam>
        /// <param name="state">The execution state.</param>
        private static void ExecutePartial <T>(object state) where T : IProfile, new()
        {
            ExecuteState asExecute = state as ExecuteState;
            T            profile   = new T();
            Stopwatch    watch     = new Stopwatch();

            for (int warmup = asExecute.Iterations / 10; warmup > 0; warmup--)
            {
                profile.Execute(watch);
            }

            bool valid = false;

            for (int i = 0; i < asExecute.Iterations; i++)
            {
                try
                {
                    watch.Restart();
                    valid = profile.Execute(watch);
                    watch.Stop();
                }
                catch
                {
                    valid = false;
                }

                if (valid)
                {
                    asExecute.Total += watch.ElapsedTicks;
                    asExecute.Count++;
                }

                asExecute.Valid = asExecute.Valid && valid;
            }
        }
コード例 #4
0
 private void PushToMainThread(ExecuteState state)
 {
     lock (cmdList)
     {
         cmdList.Add(state);
     }
 }
コード例 #5
0
        void InitializeControlState()
        {
            if (PmsService.Instance.CurrentUser.Group.Name == "检测")
            {
                // BindMeasurementControl();

                _ExecuteReportControlState = new ExecuteState();
                _ExecuteReportControlState.Enter(this);
            }
            if (PmsService.Instance.CurrentUser.Group.Name == "评审")
            {
                //BindMeasurementControl();
                //BindAuditControl();
                _ExecuteReportControlState = new AuditState();
                _ExecuteReportControlState.Enter(this);
            }
            if (PmsService.Instance.CurrentUser.Group.Name == "审批")
            {
                // BindMeasurementControl();
                //BindAuditControl();
                //BindApproveControl();

                _ExecuteReportControlState = new ApproveState();
                _ExecuteReportControlState.Enter(this);
            }
        }
コード例 #6
0
        // This is the method that the underlying, free-threaded asynchronous behavior will invoke.
        // This will happen on an arbitrary thread.
        private void ExecuteAsyncCallback(ExecuteState state, IClientHttpResponse response, Exception exception)
        {
            // Package the results of the operation
            ClientHttpRequestCompletedEventArgs eventArgs = new ClientHttpRequestCompletedEventArgs(response, exception, this.isCancelled, state.AsyncOperation.UserSuppliedState);
            ExecuteCallbackArgs <ClientHttpRequestCompletedEventArgs> callbackArgs = new ExecuteCallbackArgs <ClientHttpRequestCompletedEventArgs>(eventArgs, state.ExecuteCompleted);

            // End the task. The asyncOp object is responsible for marshaling the call.
            state.AsyncOperation.PostOperationCompleted(ExecuteResponseReceived, callbackArgs);
        }
コード例 #7
0
        public override bool Execute()
        {
            InstrumentationArguments = InstrumentationArguments ?? new string [0];
            if (string.IsNullOrEmpty(NUnit2TestResultsFile))
            {
                var n = new StringBuilder("TestResult-").Append(Component);
                foreach (var c in Path.GetInvalidFileNameChars())
                {
                    n.Replace(c, '_');
                }
                n.Append(".xml");
                NUnit2TestResultsFile = n.ToString();
            }

            Log.LogMessage(MessageImportance.Low, $"Task {nameof (RunInstrumentationTests)}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (AdbTarget)}: {AdbTarget}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (AdbOptions)}: {AdbOptions}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (Component)}: {Component}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (InstrumentationArguments)}:");
            foreach (var a in InstrumentationArguments)
            {
                Log.LogMessage(MessageImportance.Low, $"    {a}:");
            }
            Log.LogMessage(MessageImportance.Low, $"  {nameof (NUnit2TestResultsFile)}: {NUnit2TestResultsFile}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (LogcatFilename)}: {LogcatFilename}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (TestFixture)}: {TestFixture}");

            executionState = ExecuteState.RunInstrumentation;
            base.Execute();

            if (string.IsNullOrEmpty(targetTestResultsPath))
            {
                FailedToRun = Component;
                Log.LogError(
                    "Could not find NUnit2 results file after running component `{0}`: " +
                    "no `nunit2-results-path` bundle value found in command output!",
                    Component);
                // Can return false once we use MSBuild and not xbuild
                // return false;
                return(true);
            }

            executionState = ExecuteState.PullFiles;
            base.Execute();

            using (logcatWriter = File.Exists(LogcatFilename) ? File.AppendText(LogcatFilename) : File.CreateText(LogcatFilename)) {
                executionState = ExecuteState.GetLogcat;
                base.Execute();
            }

            return(!Log.HasLoggedErrors);
        }
コード例 #8
0
        private void OnPartTask(object i_Obj)
        {
            BeginInvoke(new MessageHanlderDelegate(i_O =>
            {
                var task = i_O as Task;
                if (task == null)
                {
                    return;
                }
                _ExecuteReportControlState = new ExecuteState();
                _ExecuteReportControlState.Enter(this);
                _Task             = task;
                _ExecutionManager = new ExecutionManager(_Task);
                _CurrentTemplate  = task.Part;
                if (_CurrentTemplate == null)
                {
                    return;
                }
                Mediator.Mediator.Instance.NotifyColleagues(Execution.TaskStarted, task);

                CreateReportModel();

                BindingTextControls();
                RefreshCommentControls();
                if (PmsService.Instance.CurrentUser.Group.Name == "检测")
                {
                    LblTester.Text             = PmsService.Instance.CurrentUser.Name;
                    LblTestDate.Text           = DateTime.Now.ToLongDateString();
                    _ExecuteReportControlState = new ExecuteState();
                    _ExecuteReportControlState.Enter(this);
                }
                if (PmsService.Instance.CurrentUser.Group.Name == "评审")
                {
                    BindMeasurementControl();
                    LblAuditor.Text            = PmsService.Instance.CurrentUser.Name;
                    LblAuditDate.Text          = DateTime.Now.ToLongDateString();
                    _ExecuteReportControlState = new AuditState();
                    _ExecuteReportControlState.Enter(this);
                }
                if (PmsService.Instance.CurrentUser.Group.Name == "审批")
                {
                    BindMeasurementControl();
                    BindAuditControl();
                    LblApprover.Text           = PmsService.Instance.CurrentUser.Name;
                    LblApproveDate.Text        = DateTime.Now.ToLongDateString();
                    _ExecuteReportControlState = new ApproveState();
                    _ExecuteReportControlState.Enter(this);
                }
            }), i_Obj);
        }
コード例 #9
0
ファイル: SerialClient.cs プロジェクト: A1X71/twilight
        /// <summary>
        /// 执行获取任务
        /// </summary>
        /// <param name="type">控制器类型</param>
        /// <returns>NTP协议列表</returns>
        public static List <NTP> ExecuteGetTask(ControllerType type)
        {
            List <NTP> list = new List <NTP>();

            try
            {
                logger.Debug("Start task to get!");
                lock (SerialLocker)
                {
                    if (CurrentExecuteState != ExecuteState.Untreated)
                    {
                        return(null);
                    }
                    CurrentContrllerType = type;
                    CurrentNTPList       = new List <NTP>();
                    CurrentExecuteState  = ExecuteState.GetInvalidType;
                }
                while (true)
                {
                    Thread.Sleep(100);
                    lock (SerialLocker)
                    {
                        if (CurrentFinishState == FinishState.Succeessed)
                        {
                            logger.Debug("Successed");
                            list               = CurrentNTPList;
                            CurrentNTPList     = null;
                            CurrentFinishState = FinishState.Unfinished;
                            break;
                        }
                        else if (CurrentFinishState == FinishState.Failed)
                        {
                            logger.Error("Failed");
                            list               = null;
                            CurrentNTPList     = null;
                            CurrentFinishState = FinishState.Unfinished;
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
            }
            return(list);
        }
コード例 #10
0
        public void Init()
        {
            _screenshot = new EmguScreenshot("Screenshots/tetris_play_1.png", TimeSpan.Zero);
            _screenshot.OriginalImage = _screenshot.Image;

            var currentPiece = Tetrimino.S;
            var nextPiece    = Tetrimino.L;
            var moves        = new List <Move> {
                Move.Left, Move.Rotate, Move.Drop
            };

            _agent           = new TetrisAgent(_configMock.Object, _clockMock.Object, _quantizer, _executorMock.Object, _extractor, _boardExtractor, _screenExtractor, _search);
            _agent.GameState = new GameState(currentPiece, nextPiece);

            _analyzeState = new AnalyzeState(_agent, TimeSpan.Zero, currentPiece);
            _executeState = new ExecuteState(_agent, moves, new Piece(currentPiece));
        }
コード例 #11
0
ファイル: SerialClient.cs プロジェクト: A1X71/twilight
        /// <summary>
        /// 执行设置任务
        /// </summary>
        /// <param name="list">NTP协议列表</param>
        /// <param name="type">控制器类型</param>
        /// <returns>是否成功</returns>
        public static bool ExecuteSetTask(List <NTP> list, ControllerType type)
        {
            bool resutl = false;

            try
            {
                logger.Debug("Start task to set!");
                lock (SerialLocker)
                {
                    if (CurrentExecuteState != ExecuteState.Untreated)
                    {
                        return(false);
                    }
                    CurrentContrllerType = type;
                    CurrentNTPList       = list;
                    CurrentExecuteState  = ExecuteState.SetInvalidType;
                }
                while (true)
                {
                    Thread.Sleep(100);
                    lock (SerialLocker)
                    {
                        if (CurrentFinishState == FinishState.Succeessed)
                        {
                            logger.Debug("successed");
                            resutl             = true;
                            CurrentFinishState = FinishState.Unfinished;
                            break;
                        }
                        else if (CurrentFinishState == FinishState.Failed)
                        {
                            logger.Error("failed");
                            resutl             = false;
                            CurrentFinishState = FinishState.Unfinished;
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex.Message, ex);
            }
            return(resutl);
        }
コード例 #12
0
        public override bool Execute()
        {
            InstrumentationArguments = InstrumentationArguments ?? new string [0];
            if (string.IsNullOrEmpty(NUnit2TestResultsFile))
            {
                var n = new StringBuilder("TestResult-").Append(Component);
                foreach (var c in Path.GetInvalidFileNameChars())
                {
                    n.Replace(c, '_');
                }
                n.Append(".xml");
                NUnit2TestResultsFile = n.ToString();
            }

            Log.LogMessage(MessageImportance.Low, $"Task {nameof (RunInstrumentationTests)}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (AdbTarget)}: {AdbTarget}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (AdbOptions)}: {AdbOptions}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (Component)}: {Component}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (InstrumentationArguments)}:");
            foreach (var a in InstrumentationArguments)
            {
                Log.LogMessage(MessageImportance.Low, $"    {a}:");
            }
            Log.LogMessage(MessageImportance.Low, $"  {nameof (NUnit2TestResultsFile)}: {NUnit2TestResultsFile}");
            Log.LogMessage(MessageImportance.Low, $"  {nameof (TestFixture)}: {TestFixture}");

            executionState = ExecuteState.RunInstrumentation;
            base.Execute();

            if (string.IsNullOrEmpty(targetTestResultsPath))
            {
                Log.LogError("No `nunit2-results-path` bundle value found in command output! Cannot find NUnit2 XML output!");
                return(false);
            }

            executionState = ExecuteState.PullFiles;
            base.Execute();

            Log.LogMessage(MessageImportance.Low, $"  [Output] {nameof (NUnit2TestResultsFile)}: {NUnit2TestResultsFile}");

            return(!Log.HasLoggedErrors);
        }
コード例 #13
0
        /// <summary>
        /// Execute a profile.
        /// </summary>
        /// <typeparam name="T">The profile type.</typeparam>
        /// <param name="iterations">The number of iterations.</param>
        /// <param name="meanElapsedMilliseconds">
        /// The average elapsed time per iteration.
        /// </param>
        /// <returns>A value indicating whether or not the execution is valid.</returns>
        private static bool ExecuteGeneric <T>(int iterations, out double meanElapsedMilliseconds) where T : IProfile, new()
        {
            bool result = true;
            int  dop    = Environment.ProcessorCount;

            Thread[]       executors   = new Thread[dop];
            ExecuteState[] states      = new ExecuteState[dop];
            int            perExecutor = iterations / dop;
            int            remainder   = iterations % dop;

            for (int i = 0; i < dop; i++)
            {
                states[i] = new ExecuteState
                {
                    Iterations = perExecutor + (--remainder > 0 ? 1 : 0),
                    Count      = 0L,
                    Total      = 0L,
                    Valid      = true
                };
                executors[i] = new Thread(Profiler.ExecutePartial <T>);
                executors[i].Start(states[i]);
            }

            long total = 0L;
            long count = 0L;

            for (int i = 0; i < dop; i++)
            {
                executors[i].Join();
                total += states[i].Total;
                count += states[i].Count;
                result = result && states[i].Valid;
            }

            meanElapsedMilliseconds = (double)total / TimeSpan.TicksPerMillisecond / count;
            return(result);
        }
コード例 #14
0
        private void ExecuteResponseCallback(IAsyncResult result)
        {
            ExecuteState state = (ExecuteState)result.AsyncState;

            IClientHttpResponse response  = null;
            Exception           exception = null;

            try
            {
                HttpWebResponse httpWebResponse = this.httpWebRequest.EndGetResponse(result) as HttpWebResponse;
                if (this.httpWebRequest.HaveResponse == true && httpWebResponse != null)
                {
                    response = this.CreateClientHttpResponse(httpWebResponse);
                }
            }
            catch (Exception ex)
            {
                if (ex is ThreadAbortException || ex is StackOverflowException || ex is OutOfMemoryException)
                {
                    throw;
                }
                exception = ex;
                // This exception can be raised with some status code
                // Try to retrieve the response from the error
                if (ex is WebException)
                {
                    HttpWebResponse httpWebResponse = ((WebException)ex).Response as HttpWebResponse;
                    if (httpWebResponse != null)
                    {
                        exception = null;
                        response  = this.CreateClientHttpResponse(httpWebResponse);
                    }
                }
            }

            ExecuteAsyncCallback(state, response, exception);
        }
コード例 #15
0
        private void ExecuteRequestCallback(IAsyncResult result)
        {
            ExecuteState state = (ExecuteState)result.AsyncState;

            try
            {
                // Write
                using (Stream stream = this.httpWebRequest.EndGetRequestStream(result))
                {
                    this.body(stream);
                }

                // Read
                this.httpWebRequest.BeginGetResponse(ExecuteResponseCallback, state);
            }
            catch (Exception ex)
            {
                if (ex is ThreadAbortException || ex is StackOverflowException || ex is OutOfMemoryException)
                {
                    throw;
                }
                ExecuteAsyncCallback(state, null, ex);
            }
        }
コード例 #16
0
        /// <summary>
        /// Execute this request asynchronously.
        /// </summary>
        /// <param name="state">
        /// An optional user-defined object that is passed to the method invoked
        /// when the asynchronous operation completes.
        /// </param>
        /// <param name="executeCompleted">
        /// The <see cref="Action{ClientHttpRequestCompletedEventArgs}"/> to perform when the asynchronous execution completes.
        /// </param>
        /// <see cref="InvalidOperationException">If the request is already executed or is currently executing.</see>
        public void ExecuteAsync(object state, Action <ClientHttpRequestCompletedEventArgs> executeCompleted)
        {
            this.EnsureNotExecuted();

            AsyncOperation asyncOperation = AsyncOperationManager.CreateOperation(state);
            ExecuteState   executeState   = new ExecuteState(executeCompleted, asyncOperation);

            try
            {
                // Prepare
                this.PrepareForExecution();

                // Post request
                if (this.body != null)
                {
                    this.httpWebRequest.BeginGetRequestStream(ExecuteRequestCallback, executeState);
                }
                else
                {
                    // Get request
                    this.HttpWebRequest.BeginGetResponse(ExecuteResponseCallback, executeState);
                }
            }
            catch (Exception ex)
            {
                if (ex is ThreadAbortException || ex is StackOverflowException || ex is OutOfMemoryException)
                {
                    throw;
                }
                ExecuteAsyncCallback(executeState, null, ex);
            }
            finally
            {
                this.isExecuted = true;
            }
        }
コード例 #17
0
ファイル: SerialClient.cs プロジェクト: A1X71/twilight
        /// <summary>
        /// 执行设置指令
        /// </summary>
        private static void ExecuteSet(NTP ntp)
        {
            switch (ntp.PState)
            {
            case NTPState.Successed:
                switch (CurrentExecuteState)
                {
                case ExecuteState.SetState:                                         //移除已经发送的指令 等待巡检 发送 发送完毕
                    CurrentExecuteState = ExecuteState.SetOver;
                    break;

                case ExecuteState.SetOver:                                          //等待巡检 发送下一条指令
                    if (CurrentNTPList != null && CurrentNTPList.Count > 0)
                    {
                        CurrentNTPList.RemoveAt(0);
                    }
                    if (CurrentNTPList != null && CurrentNTPList.Count > 0)
                    {
                        CurrentExecuteState = ExecuteState.SetState;
                    }
                    else
                    {
                        CurrentFinishState  = FinishState.Succeessed;
                        CurrentExecuteState = ExecuteState.Untreated;
                    }
                    break;
                }
                break;

            case NTPState.Failed:
                if (ErrorMaxCount <= 0)             //暂未使用
                {
                    CurrentExecuteState = ExecuteState.Untreated;
                    CurrentFinishState  = FinishState.Failed;
                    logger.Error("控制器验证错误数量太多!");
                }
                break;

            case NTPState.Normal:
                switch (ntp.Command)
                {
                case CommandType.MachineTypeResponose:              //控制器类型
                    if (CheckIsValidType(ntp))
                    {
                        logger.Debug("machine type matched!");
                        CurrentExecuteState = ExecuteState.SetState;
                        NTP request = NTPBuildRequest.GetConfirmRequest(true);
                        SendCommand(request);
                    }
                    else
                    {
                        CurrentExecuteState = ExecuteState.Untreated;
                        CurrentFinishState  = FinishState.Failed;
                        logger.Error("machine type unmatched!");
                    }
                    break;

                case CommandType.Patrol:                            //巡检
                    ExecuteStep();
                    break;
                }
                break;
            }
        }
コード例 #18
0
ファイル: SerialClient.cs プロジェクト: A1X71/twilight
        /// <summary>
        /// 执行获取指令
        /// </summary>
        private static void ExecuteGet(NTP ntp)
        {
            NTP request = null;

            switch (ntp.PState)
            {
            case NTPState.Successed:
            case NTPState.Failed:
                break;

            case NTPState.Normal:
                switch (ntp.Command)
                {
                case CommandType.MachineTypeResponose:                  //控制器类型
                    if (CheckIsValidType(ntp))
                    {
                        logger.Debug("machine type matched!");
                        CurrentExecuteState = ExecuteState.GetState;
                        request             = NTPBuildRequest.GetConfirmRequest(true);
                        SendCommand(request);
                    }
                    else
                    {
                        CurrentExecuteState = ExecuteState.Untreated;
                        CurrentFinishState  = FinishState.Failed;
                        logger.Error("machine type unmatched!");
                    }
                    break;

                case CommandType.Patrol:                            //巡检
                    break;

                case CommandType.Ready:                             //准备发送
                    logger.Debug("ready!");
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.DeviceUp:                          //器件设置
                    logger.Debug("device up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.StandardUp:                        //标准组态
                    logger.Debug("Standard up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.MixedUp:                           //混合组态
                    logger.Debug("Mixed up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.GeneralUp:                         //通用组态
                    logger.Debug("General up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.ManualUp:                          //手控盘
                    logger.Debug("Manual up!");
                    if (CurrentNTPList != null)
                    {
                        CurrentNTPList.Add(ntp);
                    }
                    CurrentExecuteState = ExecuteState.GetState;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;

                case CommandType.Over:                              //发送完毕
                case CommandType.Over8003:
                    logger.Debug("Get over!");
                    CurrentExecuteState = ExecuteState.Untreated;
                    CurrentFinishState  = FinishState.Succeessed;
                    request             = NTPBuildRequest.GetConfirmRequest(true);
                    SendCommand(request);
                    break;
                }
                break;
            }
        }
コード例 #19
0
 protected void OnExecuteBegin()
 {
     ++m_ExecuteTime;
     m_State = ExecuteState.Execute;
 }
コード例 #20
0
        private void OnPartReportSpecified(object i_Obj)
        {
            BeginInvoke(new Mediator.MessageHanlderDelegate(i_O =>
            {
                var partReport = i_O as PartReport;
                if (partReport == null)
                {
                    return;
                }
                _Task            = partReport.Task;
                _PartReport      = partReport;
                _CurrentTemplate = partReport.Task.Part;
                if (_CurrentTemplate == null)
                {
                    return;
                }

                _DataSource = new List <ExecuteDimensionEntityViewModel>();

                PmsService.Instance.PopulateDimensionsForReport(_PartReport);

                foreach (var en in _PartReport.Dimensions)
                {
                    _DataSource.Add(new ExecuteDimensionEntityViewModel(en));
                }

                if (_CurrentTemplate.Dimensions.Count > 0)
                {
                    _SeletedDimension = _PartReport.Dimensions[0];
                }

                dataGridView1.DataSource = _DataSource;
                btnCreateReport.Text     = @"保存报告";
                BindingTextControls();
                // RefreshCommentControls();
                if (PmsService.Instance.CurrentUser.Group.Name == "检测")
                {
                    BindMeasurementControl();
                    LblTester.Text             = PmsService.Instance.CurrentUser.Name;
                    LblTestDate.Text           = DateTime.Now.ToLongDateString();
                    _ExecuteReportControlState = new ExecuteState();
                    _ExecuteReportControlState.Enter(this);
                }
                if (PmsService.Instance.CurrentUser.Group.Name == "评审")
                {
                    BindMeasurementControl();
                    BindAuditControl();
                    LblAuditor.Text            = PmsService.Instance.CurrentUser.Name;
                    LblAuditDate.Text          = DateTime.Now.ToLongDateString();
                    _ExecuteReportControlState = new AuditState();
                    _ExecuteReportControlState.Enter(this);
                }
                if (PmsService.Instance.CurrentUser.Group.Name == "审批")
                {
                    BindMeasurementControl();
                    BindAuditControl();
                    BindApproveControl();
                    LblApprover.Text           = PmsService.Instance.CurrentUser.Name;
                    LblApproveDate.Text        = DateTime.Now.ToLongDateString();
                    _ExecuteReportControlState = new ApproveState();
                    _ExecuteReportControlState.Enter(this);
                }
            }), i_Obj);
        }
コード例 #21
0
ファイル: Entity.cs プロジェクト: Hairpay/Luxuriance
 protected bool IsState(ExecuteState state)
 {
     return(_executeState == state);
 }
コード例 #22
0
ファイル: Entity.cs プロジェクト: Hairpay/Luxuriance
 protected void SetState(ExecuteState state)
 {
     _executeState     = state;
     _isStateEntryMode = true;
 }
コード例 #23
0
 protected void OnExecuteFinish()
 {
     m_State = ExecuteState.Idle;
 }