private async Task <T> MonitorAsyncFunction <T>(Task <T> task, TimeElapsedType elapsedType, string memberName = null)
        {
            TimeElapsedInfo timeElapsedInfo = new TimeElapsedInfo();
            DateTime        startTime       = DateTime.Now;

            timeElapsedInfo.ExecuteTime = startTime;
            try
            {
                timeElapsedInfo.IsSuccess = true;
                return(await task);
            }
            catch (Exception ex)
            {
                timeElapsedInfo.IsSuccess = false;
                timeElapsedInfo.Remark    = ex.Message;
                throw;
            }
            finally
            {
                timeElapsedInfo.TimeElapsed     = (DateTime.Now - startTime).TotalMilliseconds;
                timeElapsedInfo.CallMemberName  = memberName;
                timeElapsedInfo.TimeElapsedType = elapsedType;
                _timeElapsedStatistic.AddTimeElapsedInfo(timeElapsedInfo);
            }
        }
Пример #2
0
        /// <summary>
        /// 添加消耗信息
        /// </summary>
        /// <param name="executeAction">执行的方法</param>
        /// <param name="timeElapsedType">消耗类型</param>
        /// <param name="memberName">调用的方法名字</param>
        public void AddTimeElapsedInfo(Action executeAction, TimeElapsedType timeElapsedType, string memberName = null)
        {
            TimeElapsedInfo timeElapsedInfo = new TimeElapsedInfo();
            DateTime        startTime       = DateTime.Now;

            timeElapsedInfo.ExecuteTime = startTime;
            try
            {
                executeAction();
                timeElapsedInfo.IsSuccess = true;
            }
            catch (Exception ex)
            {
                timeElapsedInfo.IsSuccess = false;
                timeElapsedInfo.Remark    = ex.Message;
                throw;
            }
            finally
            {
                timeElapsedInfo.TimeElapsed     = (DateTime.Now - startTime).TotalMilliseconds;
                timeElapsedInfo.CallMemberName  = memberName;
                timeElapsedInfo.TimeElapsedType = timeElapsedType;
                AddTimeElapsedInfo(timeElapsedInfo);
            }
        }