【发布时间】:2013-12-10 00:51:01
【问题描述】:
我需要从一个目录中提取许多视频文件并将它们拆分为音频和视频(通过 ffmpeg)并转换为 mxf 并通过第三方(开源)命令行工具进行加密。在加密时,该工具会生成密钥并将它们写入具有随机名称的文件中。所以我需要一个后台工作者(BGW)和一个文件观察者(FW)(他们都有一个 dispose 方法,所以我相信他们链接到非托管资源和应在使用后丢弃)。 我创建了一个类 - DrmConvertible (DC),它引用了原始视频路径,并且在函数调用中它完成了我需要的上述操作(模型)。还有另一个类从目录中读取所有文件并创建 DC 对象列表(如 viewModel 但不完全)。
我应该在哪里声明 FW 和 BGW ?
- 在 DC 类内部(保持封装,但每个对象都有一个实例 - 可能是 1000 秒)。
- 如果 point-01 那么它应该是全局的并在构造函数中初始化 - 它超出了类的范围(我不知道什么时候)。
- 如果 point-01 那么它是否应该在函数中是本地的,并且我在函数中显式初始化和处置它(我是否还注册和取消注册事件)。
- 在类(全局)和静态变量中,因此只维护一个实例,并且它超出了类的范围(我不知道什么时候)。这与在帮助类或服务中抽象它并初始化一次相同。
- 在外部类中(具有 DC 对象列表的视图模型 - 它破坏了封装但更容易 - 在当前上下文中)?
是否有针对这种情况的指导方针(数据持有者应该放什么,数据列表持有者应该放什么)?请不要让我看书代码完成[;)]
【问题讨论】:
-
@JensH:感谢您的全面回答。
标签: c# oop design-patterns idisposable