首页 > 解决方案 > 在容器类中处理 C# 事件的最佳方法是什么?

问题描述

我编写了一个名为的 C# 类DownloadTask,当文件完成下载时会触发一个事件。我希望将多个DownloadTask类都保存在一个容器类中,DownloadTaskManager. DownloadTaskManager包含一个List<DownloadTask> tasks对象。我使用 , , 等方法Add()Remove()ClearAllTasks()列表进行交互。我的问题是,如果我希望我的容器类 ,DownloadTaskManager也跟踪每个DownloadTask的事件,那么最好的方法是什么?

标签: c#.netevents.net-coreevent-handling

解决方案


如果“跟踪每个下载任务事件”是指将侦听器附加到它们:

  • 您可以在添加之前将事件添加到任务中,但我认为这不是您想要的
  • 您可以修改从(如果您没有,您应该创建它)Add公开的方法的签名,然后您可以创建一个方法,例如将特定事件处理程序添加到特定任务DownloadTaskManagerAdd(string id, DownloadTask task)RegisterEvent(string id, Action onDownloaded)

您必须向DownloadTaskManager班级外部提供一种识别特定任务的方法,以便您可以在内部映射它们。


推荐阅读