c# - 在容器类中处理 C# 事件的最佳方法是什么?
问题描述
我编写了一个名为的 C# 类DownloadTask
,当文件完成下载时会触发一个事件。我希望将多个DownloadTask
类都保存在一个容器类中,DownloadTaskManager
. DownloadTaskManager
包含一个List<DownloadTask> tasks
对象。我使用 , , 等方法Add()
与Remove()
该ClearAllTasks()
列表进行交互。我的问题是,如果我希望我的容器类 ,DownloadTaskManager
也跟踪每个DownloadTask
的事件,那么最好的方法是什么?
解决方案
如果“跟踪每个下载任务事件”是指将侦听器附加到它们:
- 您可以在添加之前将事件添加到任务中,但我认为这不是您想要的
- 您可以修改从(如果您没有,您应该创建它)
Add
公开的方法的签名,然后您可以创建一个方法,例如将特定事件处理程序添加到特定任务DownloadTaskManager
Add(string id, DownloadTask task)
RegisterEvent(string id, Action onDownloaded)
您必须向DownloadTaskManager
班级外部提供一种识别特定任务的方法,以便您可以在内部映射它们。
推荐阅读
- opengl - 关于实例化、实例化数组和缓冲区更新的问题
- postgresql - PostgreSQL v13 WAL序列号问题
- reactjs - 在 ubuntu 18 中运行 React Dockerfile 时出现错误
- react-native - 不变违规:[7655,“RCTView”,{“flexGrow”:“<
>"}] 不能用作本机方法参数 - swift - 快速获取可编码的属性名称作为字符串
- python - 如果其中一项任务在 asyncio 中完成,如何关闭循环
- c# - 将 ASP.NET Core 3.1 迁移到 .NET 5.0
- azure - Azure 通用 v2 存储帐户和 BlockBlobStorage 帐户之间的区别解释了吗?
- c++ - 如何检查 lua_state 是否已关闭?
- vue.js - 如何在 Vuetify 的 v-select 中禁用悬停