我正在开发一个赢表,连续24/7视频播放器,我需要一些帮助来决定哪个线程类适合我的需要。这是我第一次尝试多线程。我熟悉BackgroundWorker类,有几个要设置的属性和要处理的事件,但我还没有深入研究其余的线程类。我认为我的应用程序的任务很简单,但我可能在简单程度上是错误的。
以下是该播放器的一些功能:
读取SQL Server数据库并在DataGridView上显示数据。
从DataGridView CellMouseDoubleClick事件将DataRepeaterItems添加到DataRepeater控件(用于播放列表)。
使用每个CellMouseClick事件在辅助(预览)播放器上加载视频声音。
播放器的播放按钮在视频播放器实例上加载和播放视频,更新一些标签,在辅助DataRepeater上添加DataRepeaterItem (充当播放列表历史记录的角色),并从playlist DataRepeater控件中删除当前正在播放的DataRepeaterItem。
还有几个删除所有DataRepeaterItems和在列表中上下移动项目的按钮。稍后会添加一些类似自动播放列表的功能,根据某些条件用多个项目填充DataRepeater控件。(全天候播放)
你们觉得是什么原因?使用BackgroundWorker安全吗?还是使用其他线程类更好?
发布于 2012-01-10 21:57:31
如果你使用的是.Net 4或更高版本,我建议你使用Task类而不是Background Worker
任务类肯定是对BackgroundWorker的改进。它有更多的灵活性。使用任务可以比使用BackgroundWorker编写更优雅的代码。例如,您可以通过使用任务继续的概念来避免BackgroundWorker中涉及的事件处理程序。
发布于 2012-01-10 23:51:51
如果.NET 4可用,请务必使用Task%s。它们有很多有用的特性:
当当前工作有completed.
Task排队更多工作的能力。还有更多。查看this source可以很好地了解您可以做些什么。
https://stackoverflow.com/questions/8804178
复制相似问题