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); } }
/// <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); } }