public void Intercept(IInvocation invocation) { MethodExecutionInfo context = new MethodExecutionInfo(); context.MethodName = invocation.Method.Name; context.ExecutionDate = DateTime.Now; context.HasException = false; var watch = Stopwatch.StartNew(); try { invocation.Proceed(); } catch (Exception ex) { try { watch.Stop(); context.Duration = watch.ElapsedMilliseconds; context.HasException = true; _clientProcessor.AddHeartbeatContext(context); } catch { // ignored } throw; } watch.Stop(); context.Duration = watch.ElapsedMilliseconds; _clientProcessor.AddHeartbeatContext(context); }
public void AddHeartbeatContext(MethodExecutionInfo context) { var acquiredLock = false; Monitor.Enter(_infoReserve, ref acquiredLock); if (!acquiredLock) { Console.WriteLine("NO LOCK!"); } try { _infoReserve.ExecStats.Add(context); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (acquiredLock) { Monitor.Exit(_infoReserve); } } }
public void Intercept(IInvocation invocation) { MethodExecutionInfo context = new MethodExecutionInfo(); context.MethodName = invocation.Method.Name; context.ExecutionDate = DateTime.Now; context.HasException = false; var watch = Stopwatch.StartNew(); try { invocation.Proceed(); } catch (Exception ex) { try { watch.Stop(); context.Duration = watch.ElapsedMilliseconds; context.HasException = true; _clientProcessor.AddHeartbeatContext(context); } catch { // ignored } throw; } watch.Stop(); context.Duration = watch.ElapsedMilliseconds; _clientProcessor.AddHeartbeatContext(context); }
public void AddHeartbeatContext(MethodExecutionInfo context) { var acquiredLock = false; Monitor.Enter(_infoReserve, ref acquiredLock); if (!acquiredLock) Console.WriteLine("NO LOCK!"); try { _infoReserve.ExecStats.Add(context); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { if (acquiredLock) Monitor.Exit(_infoReserve); } }