Как мне реализовать реализацию асинхронного шаблона на основе событий? - PullRequest
4 голосов
/ 18 ноября 2010

Привет, я хочу реализовать асинхронный шаблон, основанный на событиях, используя c #.Приведенная ниже документация Microsoft действительно полезна, но совершенно правильно, что она не включает подробности реализации.

http://msdn.microsoft.com/en-us/library/ms228969.aspx

Какие у меня есть варианты для реализации этого шаблона?Должен ли я использовать Delegate.BeginInvoke, ThreadPool.QueueUserWorkItem, новый Thread (), класс BackgroundWorker или что-то еще?

Я создаю простую библиотеку кода.Его можно использовать в форме Windows, консольном приложении или контексте ASP.NET.

Было бы здорово увидеть пример кода.

Ответы [ 2 ]

4 голосов
/ 11 января 2011

Если вы хотите реализовать асинхронный шаблон на основе событий, тогда AsyncFunc - самый простой способ.

Это значительно упрощает этот шаблон. Вам не нужно беспокоиться о ThreadPools, Threads или BackgroundWorkers. AsyncFunc обрабатывает все для вас. Более того, этот подход позволяет отделить бизнес-логику от реализации, специфичной для шаблона, что улучшает тестируемость.

http://asyncfunc.codeplex.com

Вы можете найти сравнение рекомендованного MSDN способа и реализации AsyncFunc одного и того же компонента:

MSDN против AsyncFunc

1 голос
/ 18 ноября 2010

Прочтите этот раздел этой статьи:

http://msdn.microsoft.com/en-us/library/9hk12d4y.aspx

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

...