| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											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) |