private void DoListen(ITraceListener listener, TraceEntry entry) { if(listener == null) return; bool shouldTrace = true; try { if(listener.Filter != null) shouldTrace = listener.Filter.ShouldTrace(entry); } catch(Exception ex) { this.OnFailed(new FailureEventArgs(ex, listener.Filter)); } try { if(shouldTrace) listener.OnTrace(entry); } catch(Exception ex) { this.OnFailed(new FailureEventArgs(ex, listener)); } }