using System;
using System.Diagnostics;
using System.Reflection;
namespace ICSharpCode.TextEditor.Utils
{
///
/// http://paulstovell.com/blog/weakevents
///
/// The type of the event args.
[DebuggerNonUserCode]
public sealed class WeakEventHandler where TEventArgs : EventArgs
{
private readonly WeakReference _targetReference;
private readonly MethodInfo _method;
public WeakEventHandler(EventHandler callback)
{
_method = callback.Method;
_targetReference = new WeakReference(callback.Target, true);
}
[DebuggerNonUserCode]
public void Handler(object sender, TEventArgs e)
{
var target = _targetReference.Target;
if (target != null)
{
var callback = (Action