加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中静态事件的负面影响/不良做法

发布时间:2020-12-16 00:22:56 所属栏目:百科 来源:网络整理
导读:当我创建将在应用程序的不同区域中使用的事件时,我会重复使用下面的代码.我觉得它非常有用,它使事件很容易在代码中遵循.有什么理由说这可能是一个坏主意吗?这有点宽泛,但基本上有理由不这样做吗? 活动课程: public delegate void FocusEventHandler(objec
当我创建将在应用程序的不同区域中使用的事件时,我会重复使用下面的代码.我觉得它非常有用,它使事件很容易在代码中遵循.有什么理由说这可能是一个坏主意吗?这有点宽泛,但基本上有理由不这样做吗?

活动课程:

public delegate void FocusEventHandler(object source,FocusEventArgs e);

class FocusEvent
{
    public static event FocusEventHandler focusEvent;

    public static void Focus(bool status)
    {
        focusEvent(null,new FocusEventArgs(status));
    }
}

public class FocusEventArgs : EventArgs
{
    public bool Focused { get; set; }

    public FocusEventArgs(bool f)
    {
        Focused = f;
    }
}

所以我需要的是:

FocusEvent.Focus(false);

多谢你们.这有很大帮助.我真的需要阅读内存使用情况.

解决方法

静态事件的最大问题是您需要非常小心取消订阅它们.对于实例事件,如果您没有取消订阅,那么您可能最终会将图形的一部分人为地保留,直到具有该事件的对象被释放并且无法访问(使所有订阅者无法访问) – 但是,静态事件永远不会变得无法访问.这意味着任何未取消订阅的订阅者将永远无法访问,并且永远不会被垃圾回收.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读