У меня есть 2 вида проектов приложений С# WPF:
- на .NET 4.0, который я не могу перенести на .NET 4.5
- на основе .NET 4.0, с которым я могу перейти на .NET 4.5
Все они должны запускать 2-10 длительных (дней) процессов, которые могут быть отменены и повторно запущены пользователями.
Мне интересно следовать лучшим методам проектирования. Прежде всего, теперь мне интересно разоблачить использование BackgroundWorker, хотя, надеюсь, мой вопрос должен быть справедливым в отношении других асинхронных шаблонов.
Я вижу (противоречащие) параллельные точки зрения о
- Модель асинхронного программирования (APM)
- Асинхронный шаблон на основе событий (EAP)
- BackgroundWorker
асинхронные шаблоны:
-  A).NET 4.5 сделал их устаревшими - назван как таковой в книге Джозефа Альбахари, Бен Альбахари "С# 5.0 в двух словах: окончательная ссылка" в подглаве " Устаревшие шаблоны", в то время как его предыдущее издание "С# 4.0 в двух словах: окончательная ссылка" не
- Статья MSDN "Асинхронное программирование с помощью Async и Await (С# и Visual Basic)" сообщает:
 
"Асинхронный подход к асинхронному программированию предпочтительнее существующих подходов практически в каждом случае. В частности, этот подход лучше BackgroundWorker для операций с привязкой к IO, потому что код проще, и вам не нужно защищать от условий гонки. В сочетании с Task.Run асинхронное программирование лучше, чем BackgroundWorker для операций с привязкой к процессору, потому что асинхронное программирование разделяет координационные данные о выполнении вашего кода из работы что Task.Run передается в threadpool "
-  B) Они (или, по крайней мере, BackgroundWorker) не устарели в .NET 4.5
Я все еще сомневаюсь:
- Являются ли эти шаблоны (в первую очередь, BGW) устаревшими в .NET 4.5?
-  Если они устарели в .NET 4.5, почему они не устарели в .NET 4.0? 2A) Не понимаю ли я неправильно, что новые возможности .NET 4.5 все еще "легки" для реализации/воспроизводимости в .NET 4.0? 
