Кто-нибудь знает хорошие ресурсы для шаблонов параллельного программирования / тестирования с использованием задач .NET 4.0? - PullRequest
2 голосов
/ 09 августа 2010

Недавно я попросил разработчика написать библиотеку, используя новые возможности многопоточности .NET 4.0.

Он проделал большую работу, но меня беспокоит, что логика Task повторяется по всему коду, а некрасиво инкапсулированы.

Я также обеспокоен тем, что это создает проблему, когда дело доходит до тестирования.Обычно я тестирую, создавая шов в коде, создавая интерфейс и объект-заглушку / макет для выполнения моих тестов.

Я полагаю, что это возможно, используя этот способ действий.Просто кажется, что логика производственного кода будет сильно отличаться от логики тестов.

Является ли решением сделать параллельные тесты и просто повторить в них логику Task?Или люди придумали шаблоны, в которых большая часть логики обработки задач может быть инкапсулирована для простого дублирования?

Спасибо!

Task task = Task.Factory.StartNew(() =>
        {
            if(cancellationToken.IsCancellationRequested)
            {
                throw new OperationCanceledException();
            }

            if (_bookHeader.EncryptionType != 0)
            {
                throw new MobiException("The book is encrypted");
            }

            ExtractText();

            partReady(66.66f);
        }, cancellationToken);

        Task opfTask = task.ContinueWith(antecedent =>
            {
                if (antecedent.Status != TaskStatus.Canceled)
                {
                    OpfDocument opf = CreateOpf();

                    partReady(80);

                    MobiDocument book = new MobiDocument()
                    {
                        Contents = _mobiHtml,
                        Description = opf,
                        Header = _bookHeader,
                        Sections = _sections
                    };
                    Document = book;


                    GC.Collect();

                    partReady(100);
                }
            });             

        return opfTask;
    }

Ответы [ 3 ]

0 голосов
/ 09 августа 2010

Я был бы удивлен (но рад), если возможно улучшить последние 3 главы CLR через C # 3rd Ed Рихтера , чтобы получить отличное представление о ландшафте параллельных вещей в .NET 4. (Просто прочитайте Эффективный C #, второе издание и не можете сказать то же самое, поскольку он освещает TPL и PL)

Одна из причин, по которой я считаю это уместным, состоит в том, что он много говорит окак сделать код чистым и поддерживаемым (и некоторые вещи в PowerThreading, которые он использовал довольно часто).(И в маловероятном случае, если вы не знаете о книге, у вас будет книга CLR, а 3-е издание - значительное улучшение 2-го издания)

0 голосов
/ 09 августа 2010

Шаблоны для параллельного программирования: понимание и применение параллельных шаблонов в .NET Framework 4

В этом документе представлен подробный и подробный обзор поддержки в Microsoft®.NET Framework 4 для параллельного программирования.Сюда входит изучение общих параллельных шаблонов и того, как они реализованы без этой новой поддержки в .NET Framework и с этой новой поддержкой, а также рекомендации по разработке параллельных компонентов с использованием параллельных шаблонов.

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