是否可以检测何时在进程外添加和处理EventHandler?

时间:2017-11-09 12:04:27

标签: c# wpf

我认为答案是否定的,但我想问一下它是否可能

场景:我有一个WPF应用程序使用$('#yourselect').click( function(e){ var i = this.selectedIndex; if(this.options[i].selectedOld==true){ this.options[i].selected = false; this.options[i].selectedOld = false; } else{ this.options[i].selectedOld = true; } }); class static来订阅不同控件之间的交互

基本上,

event

然后从某些控件中获得订阅的一些方法:

public class EventNotifier
{
    public static event EventHandler<SomeEventArgs> EventTriggered;
    public static void NotifyEventTriggered(object source, SomeEventArgs eventArgs)
    {
        if (EventTriggered!= null)
        {
            EventTriggered(source, eventArgs);
        }
    }
}

从其他一些控件中触发事件:

EventNotifier.EventTriggered+= new EventHandler<SomeEventArgs>(SomeMethodToReceiveEvent);

这一切都非常简单。当处理订阅其方法的控件时,事件也会被处理:

EventNotifier.NotifyEventTriggered(null, eventArgs);

鉴于WPF的性质使内存泄漏频繁,事件未正确取消订阅,直到现在我每次发生泄漏时都必须手动测试每个控件,以确保事件正确处理。这非常耗时

分析我使用的内存使用情况的一些工具完全无法识别未导致内存泄漏的事件

这就是为什么我一直梦想着创建自己的工具来检测每次方法订阅某个事件,并在每次取消订阅时进行检测

我知道我可以使用以下属性在代码中执行此操作:

EventNotifier.EventTriggered-= new EventHandler<SomeEventArgs>(SomeMethodToReceiveEvent);

但我的梦工具将是我的应用程序外部的工具,并连接到监视其事件的进程。我只是在做梦或者这有可能吗?

0 个答案:

没有答案