在容器 class 中处理 C# 事件的最佳方式是什么?
What is the best way to handle C# events inside a container class?
我编写了一个名为 DownloadTask
的 C# class,它会在文件下载完成时触发一个事件。我想将多个 DownloadTask
class 全部保存在容器 class、DownloadTaskManager
中。 DownloadTaskManager
包含一个 List<DownloadTask> tasks
对象。我使用 Add()
、Remove()
、ClearAllTasks()
等方法与该列表进行交互。我的问题是,如果我想让我的容器 class、DownloadTaskManager
也跟踪每个 DownloadTask
的事件,最好的方法是什么?
如果 "keep track of each Download Task event" 你的意思是将听众附加到他们:
- 你可以先把事件添加到任务中再添加,但我觉得这不是你想要的
- 你可以修改
DownloadTaskManager
公开的 Add
方法的签名(如果你没有,你应该创建它)到类似 Add(string id, DownloadTask task)
的东西,然后您可以创建类似 RegisterEvent(string id, Action onDownloaded)
的方法来将特定事件处理程序添加到特定任务
您必须向 DownloadTaskManager
class 外部提供一种识别特定任务的方法,以便您可以在内部映射它们。
我编写了一个名为 DownloadTask
的 C# class,它会在文件下载完成时触发一个事件。我想将多个 DownloadTask
class 全部保存在容器 class、DownloadTaskManager
中。 DownloadTaskManager
包含一个 List<DownloadTask> tasks
对象。我使用 Add()
、Remove()
、ClearAllTasks()
等方法与该列表进行交互。我的问题是,如果我想让我的容器 class、DownloadTaskManager
也跟踪每个 DownloadTask
的事件,最好的方法是什么?
如果 "keep track of each Download Task event" 你的意思是将听众附加到他们:
- 你可以先把事件添加到任务中再添加,但我觉得这不是你想要的
- 你可以修改
DownloadTaskManager
公开的Add
方法的签名(如果你没有,你应该创建它)到类似Add(string id, DownloadTask task)
的东西,然后您可以创建类似RegisterEvent(string id, Action onDownloaded)
的方法来将特定事件处理程序添加到特定任务
您必须向 DownloadTaskManager
class 外部提供一种识别特定任务的方法,以便您可以在内部映射它们。