相关疑难解决方法(0)

不注销事件处理程序是不是很糟糕?

如果我的应用程序只注册了几个事件处理程序(并且在应用程序关闭之前不会处理使用事件的对象),我是否真的需要担心取消注册这些处理程序?我能看到的唯一一个好理由是,如果事件被解雇你可能会有一些额外的开销,你不必关心(即你有多个处理程序注册到一个事件).还有其他好的理由吗?任何人都遇到重大问题,因为他们没有取消注册事件?

c# events event-handling

64
推荐指数
2
解决办法
8332
查看次数

我应该总是在Dispose方法中断开事件处理程序吗?

我在C#工作,我的工作场所有一些代码标准.其中之一是我们连接的每个事件处理程序(例如KeyDown)必须在Dispose方法中断开连接.这有什么好的理由吗?

.net c# events dispose event-handling

42
推荐指数
3
解决办法
2万
查看次数

不删除事件处理程序会导致.Net中出现问题吗?

我有以下代码:

public void LoadPage()
        {
            LayoutPanel.Controls.Clear();
            ContentObjects = LoadContentObjects();
            foreach (string img in ContentObjects)
            {
                thumbnail = new ctrlThumbnailControl(img);
                LayoutPanel.Controls.Add(thumbnail);
                thumbnail.ThumbnailSelected += Thumbnail_ThumbnailSelected;
            }
        }

        private void Thumbnail_ThumbnailSelected(string PathToMedia)
        {
            lblFileName.Text = PathToMedia;
        }
Run Code Online (Sandbox Code Playgroud)

我为每个加载的图像创建一个缩略图控件(限制为每页150个).缩略图控制器具有在悬停在控件上时引发的事件.

所以这个页面有150个带事件的控件.当我加载下一页时,我不删除事件.我删除了控件.并创建另外150个控件添加事件给他们.

所以问题是:

  1. 当控件是Clear()时,是否删除了事件处理程序?

如果不是,我将如何以编程方式清除事件处理程序,而无需单独检查每个控件并删除它的处理程序?

c# events user-controls event-handling winforms

1
推荐指数
1
解决办法
130
查看次数

标签 统计

c# ×3

event-handling ×3

events ×3

.net ×1

dispose ×1

user-controls ×1

winforms ×1