Разница только в используемом шаблоне.
Пока событие -Асинхронный шаблон на основе имеет много преимуществ в ранее упомянутых сценариях, у него есть некоторые недостатки, о которых вам следует знать, если производительность является вашим наиболее важным требованием.
Существует три сценария, в которых шаблон на основе событий неaddress, а также шаблон IAsyncResult:
Блокировка ожидания на одном IAsyncResult
Блокировка ожидания на многих объектах IAsyncResult
Опрос на завершение в IAsyncResult
Вы можете обратиться к этим сценариям, используя шаблон, основанный на событиях, но сделать это более громоздко, чем при использовании IAsyncResult pattern.
Разработчики часто используют шаблон IAsyncResult для сервисов, которые обычно предъявляют очень высокие требования к производительности.Например, сценарий опроса завершения - это высокопроизводительный серверный метод.
Кроме того, шаблон на основе событий менее эффективен, чем шаблон IAsyncResult, поскольку он создает больше объектов, особенно EventArgs, и потому, что он синхронизируется междуthreads.
В следующем списке приведены некоторые рекомендации, которым необходимо следовать, если вы решите использовать шаблон IAsyncResult:
Предоставлять шаблон IAsyncResult можно только в том случае, если вам специально требуется поддержка WaitHandle илиОбъекты IAsyncResult.
Предоставляйте шаблон IAsyncResult только при наличии существующего API, который использует шаблон IAsyncResult.
При наличии существующего APIосновываясь на шаблоне IAsyncResult, рассмотрите возможность предоставления шаблона на основе событий в следующем выпуске.
Предоставляйте шаблон IAsyncResult только в том случае, если у вас есть высокие требования к производительности, которые, как вы убедились, не могут быть выполненышаблон на основе событий, но может быть мet по шаблону IAsyncResult.