Video Player线程

时间:2012-01-10 13:41:04

标签: c# winforms multithreading

我正在开发一个胜利形式,持续的24/7视频播放器,我需要一些帮助来决定哪个线程类适合我的需求。这是我的第一次多线程尝试。我熟悉BackgroundWorker类,要设置的几个属性和要处理的事件,但我还没有深入研究其余的Threading类。我正在考虑我的应用程序的任务很简单,但我对简单程度可能是错误的。

以下是播放器的一些功能:

读取SQL Server数据库并在DataGridView上显示数据。

从DataGridView CellMouseDoubleClick事件向DataRepeater控件添加DataRepeaterItems(用于播放列表)。

使用每个CellMouseClick事件在辅助(预览)播放器上加载视频声音。

播放器的PLAY按钮加载并播放视频播放器实例上的视频,更新一些标签,在辅助DataRepeater上添加DataRepeaterItem(服务于播放列表历史记录的角色)并删除当前正在播放的DataRepeaterItem,播放列表DataRepeater控件。

还有一些按钮会删除所有DataRepeaterItem并在列表中上下移动项目。 稍后会添加类似自动播放列表功能的内容,根据某些条件使用多个项目填充DataRepeater控件。 (24/7球员)

你们为什么这么认为?使用BackgroundWorker是安全的还是更好地查看其他线程类?

2 个答案:

答案 0 :(得分:1)

如果您使用的是.Net 4或更高版本,我建议使用Task课程,而不是Background Worker

任务类肯定是对BackgroundWorker的改进。它具有更大的灵活性。您可以使用Task而不是BackgroundWorker编写更优雅的代码。例如,您可以通过使用任务延续的概念来避免BackgroundWorker中涉及的事件处理程序。

答案 1 :(得分:0)

如果.NET 4可用,请绝对使用Task。它们有很多有用的功能:

  1. 当前工作完成后,为同一Task排队工作的能力。
  2. 对调用线程的异常进行封送。
  3. “智能”安排。
  4. 还有更多。请查看this source,了解您可以执行的操作。