我正在开发一个胜利形式,持续的24/7视频播放器,我需要一些帮助来决定哪个线程类适合我的需求。这是我的第一次多线程尝试。我熟悉BackgroundWorker类,要设置的几个属性和要处理的事件,但我还没有深入研究其余的Threading类。我正在考虑我的应用程序的任务很简单,但我对简单程度可能是错误的。
以下是播放器的一些功能:
读取SQL Server数据库并在DataGridView上显示数据。
从DataGridView CellMouseDoubleClick事件向DataRepeater控件添加DataRepeaterItems(用于播放列表)。
使用每个CellMouseClick事件在辅助(预览)播放器上加载视频声音。
播放器的PLAY按钮加载并播放视频播放器实例上的视频,更新一些标签,在辅助DataRepeater上添加DataRepeaterItem(服务于播放列表历史记录的角色)并删除当前正在播放的DataRepeaterItem,播放列表DataRepeater控件。
还有一些按钮会删除所有DataRepeaterItem并在列表中上下移动项目。 稍后会添加类似自动播放列表功能的内容,根据某些条件使用多个项目填充DataRepeater控件。 (24/7球员)
你们为什么这么认为?使用BackgroundWorker是安全的还是更好地查看其他线程类?
答案 0 :(得分:1)
如果您使用的是.Net 4
或更高版本,我建议使用Task课程,而不是Background Worker
任务类肯定是对BackgroundWorker的改进。它具有更大的灵活性。您可以使用Task而不是BackgroundWorker编写更优雅的代码。例如,您可以通过使用任务延续的概念来避免BackgroundWorker中涉及的事件处理程序。
答案 1 :(得分:0)
如果.NET 4可用,请绝对使用Task
。它们有很多有用的功能:
Task
排队工作的能力。还有更多。请查看this source,了解您可以执行的操作。