2016-08-08 23:31:41 +01:00
|
|
|
---
|
|
|
|
layout: pattern
|
|
|
|
title: Event-based Asynchronous
|
|
|
|
folder: event-asynchronous
|
|
|
|
permalink: /patterns/event-asynchronous/
|
2016-10-03 21:05:11 +01:00
|
|
|
categories: Concurrency
|
2021-05-19 10:49:05 -06:00
|
|
|
language: en
|
2016-08-08 23:31:41 +01:00
|
|
|
tags:
|
2019-12-13 21:09:28 +02:00
|
|
|
- Reactive
|
2016-08-08 23:31:41 +01:00
|
|
|
---
|
|
|
|
|
|
|
|
## Intent
|
|
|
|
The Event-based Asynchronous Pattern makes available the advantages of multithreaded applications while hiding many
|
2017-03-25 22:07:10 +01:00
|
|
|
of the complex issues inherent in multithreaded design. Using a class that supports this pattern can allow you to:
|
|
|
|
|
|
|
|
1. Perform time-consuming tasks, such as downloads and database operations, "in the background," without interrupting your application.
|
|
|
|
2. Execute multiple operations simultaneously, receiving notifications when each completes.
|
|
|
|
3. Wait for resources to become available without stopping ("hanging") your application.
|
|
|
|
4. Communicate with pending asynchronous operations using the familiar events-and-delegates model.
|
2016-08-08 23:31:41 +01:00
|
|
|
|
2019-12-07 20:01:13 +02:00
|
|
|
## Class diagram
|
2016-08-08 23:31:41 +01:00
|
|
|

|
|
|
|
|
|
|
|
## Applicability
|
|
|
|
Use the Event-based Asynchronous pattern(s) when
|
|
|
|
|
|
|
|
* Time-consuming tasks are needed to run in the background without disrupting the current application.
|
|
|
|
|
|
|
|
## Credits
|
|
|
|
|
|
|
|
* [Event-based Asynchronous Pattern Overview](https://msdn.microsoft.com/en-us/library/wewwczdw%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396)
|