public override void OnInvoke(PostSharp.Aspects.MethodInterceptionArgs args) { LockObject t = null; if (_typeLock.TryGetValue(instanceType, out t)) { if (Monitor.TryEnter(t, _acquireLockTimeout)) { try { Debug.WriteLine("Entering for " + instanceType + " Lock: " + t.Guid.ToString()); args.Proceed(); } finally { Debug.WriteLine("Completed blocking" + instanceType + " Lock: " + t.Guid.ToString()); Monitor.Exit(t); } } } else { throw new InvalidOperationException("Lock object not found for " + instanceType); } }
public override void OnInvoke(PostSharp.Aspects.MethodInterceptionArgs args) { string exContext = string.Format(System.Globalization.CultureInfo.InvariantCulture, _context, args.Arguments.ToArray()); using (log4net.ThreadContext.Stacks[Zieschang.Net.Projects.PostsharpAspects.Utilities.LogHelper.DefaultLoggerContextStack].Push(exContext)) { args.Proceed(); } }
public override void OnInvoke(PostSharp.Aspects.MethodInterceptionArgs args) { int counter = 0; object instance = args.Instance; log4net.ILog lg = null; if (_staticInstanceField == null) { lg = InternalFieldFinder.Instance.GetInstance <log4net.ILog>(args.Method, instance); } else { lg = _staticInstanceField; } do { //delay on each cycle before continue //in future use a strategy if (counter > 0 && RetryDelay > 0) { System.Threading.Thread.Sleep(RetryDelay); } counter++; try { args.Proceed(); counter = Int32.MaxValue; } catch (Exception ex) { if (ExceptionFilterType == null || ExceptionFilterType.IsAssignableFrom(ex.GetType())) { if (counter < _maxRetries) { lg.Info(string.Format(System.Globalization.CultureInfo.InvariantCulture, _retryMessage, counter), ex); } else { string msg = string.Format(System.Globalization.CultureInfo.InvariantCulture, _failureMessage, counter); if (!string.IsNullOrEmpty(_message)) { msg = Message + " " + msg; } lg.Error(msg, ex); if (_raiseAfterRetries) { throw; } } } } } while (counter < _maxRetries); }