Видеоплеер Threading - PullRequest
       0

Видеоплеер Threading

2 голосов
/ 10 января 2012

Я разрабатываю выигрышные формы, непрерывный круглосуточный видеоплеер, и мне нужна помощь, чтобы решить, какой класс Threading удовлетворяет моим потребностям. Это моя первая попытка многопоточности. Я знаком с классом BackgroundWorker, парой свойств, которые нужно установить, и событиями, которые нужно обработать, но я не стал углубляться в остальные классы Threading. Я считаю задачи своего приложения простыми, но могу ошибаться в отношении уровня простоты.

Вот некоторые функции плеера:

Считывает базу данных SQL Server и отображает данные в DataGridView.

Добавляет DataRepeaterItems в элемент управления DataRepeater (служит для целей списка воспроизведения) из события DataGridView CellMouseDoubleClick.

Загружает звук видео на дополнительном проигрывателе (превью) с каждым событием CellMouseClick.

Кнопка проигрывателя загружает и воспроизводит видео на экземпляре видеопроигрывателя, обновляет некоторые метки, добавляет DataRepeaterItem во вторичный DataRepeater (выполняет роль истории списка воспроизведения) и удаляет текущий DataRepeaterItem, тот, который в данный момент воспроизводится, элемент управления DataRepeater списка воспроизведения.

Есть еще пара кнопок, удаляющих все элементы DataRepeaterItems и перемещающих элементы вверх и вниз по списку. Позже будет добавлено что-то вроде функции автоматического воспроизведения, заполнив элемент управления DataRepeater несколькими элементами на основе некоторых критериев. (24/7 игрок)

Почему вы, ребята, думаете? Безопасно ли использовать BackgroundWorker или лучше взглянуть на другие классы Threading?

Ответы [ 2 ]

1 голос
/ 10 января 2012

Хорошо, если вы используете .Net 4 или выше, я бы рекомендовал Задача класс, а не Background Worker

Класс задач, безусловно, лучше, чем BackgroundWorker. У него больше гибкости. Вы можете написать более элегантный код, используя Task, чем BackgroundWorker. Например, вы можете избежать обработчиков событий, задействованных в BackgroundWorker, используя концепцию продолжения задачи.

0 голосов
/ 10 января 2012

Определенно используйте Task s, если доступен .NET 4.У них так много полезных функций:

  1. Возможность поставить в очередь больше работы для того же Task, когда текущая работа завершена.
  2. Маршалинг исключений в вызывающий поток.
  3. «Умное» планирование.

и многое другое.Проверьте этот источник для хорошего обзора того, что вы можете сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...