mirror of https://github.com/abpframework/abp
				
				
				
			
							parent
							
								
									2147fe5236
								
							
						
					
					
						commit
						798da7473c
					
				| @ -0,0 +1,83 @@ | ||||
| # Background Workers | ||||
| 
 | ||||
| ## Introduction | ||||
| 
 | ||||
| Background workers are used to execute some tasks in the background. You may need background workers for several reasons. | ||||
| 
 | ||||
| ### Create a Background Worker | ||||
| 
 | ||||
| A background worker is a class that derives from the `AsyncPeriodicBackgroundWorkerBase` or `PeriodicBackgroundWorkerBase` class. Both base classes are derived from `ISingletonDependency`. | ||||
| 
 | ||||
| ### Status Checker | ||||
| This example is used to simple check remote application status. Just suppose that, we want to check and store some web applications are running or not?  | ||||
| 
 | ||||
| ````csharp | ||||
| public class AppStatusService : ITransientDependency | ||||
| { | ||||
|     . | ||||
|     . | ||||
|     public void CheckAppStatus() | ||||
|     { | ||||
|         var ping = new System.Net.NetworkInformation.Ping(); | ||||
| 
 | ||||
|         var result = ping.Send("www.google.com"); | ||||
| 
 | ||||
|         // save the result | ||||
|     } | ||||
|     . | ||||
|     . | ||||
| } | ||||
| ```` | ||||
| 
 | ||||
| Then create a background worker class that derived from the `PeriodicBackgroundWorkerBase`: | ||||
| 
 | ||||
| ````csharp | ||||
| . | ||||
| . | ||||
| using Volo.Abp.BackgroundWorkers; | ||||
| 
 | ||||
| namespace Volo.Www.Application | ||||
| { | ||||
|     public class AppStatusCheckingWorker : PeriodicBackgroundWorkerBase | ||||
|     { | ||||
|         private readonly IAppStatusService _appStatusService; | ||||
| 
 | ||||
|         public AppStatusCheckingWorker( | ||||
|             AbpTimer timer, | ||||
|             IServiceScopeFactory scopeFactory,  | ||||
|             IAppStatusService appStatusService) | ||||
|             : base(timer, scopeFactory) | ||||
|         { | ||||
|             _appStatusService = appStatusService; | ||||
|             Timer.Period = 10_000; // 10 secs | ||||
|         } | ||||
| 
 | ||||
|         protected override void DoWork(PeriodicBackgroundWorkerContext workerContext) | ||||
|         { | ||||
|             _appStatusService.CheckAppStatus(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| ```` | ||||
| 
 | ||||
| This worker will call DoWorkAsync() method every 10 seconds while the application is running. | ||||
| 
 | ||||
| ### Configuration | ||||
| 
 | ||||
| Add your BackgroundWorker at `OnApplicationInitialization` in your [module class](Module-Development-Basics.md). The example below initialize the background worker to your module: | ||||
| 
 | ||||
| ````csharp | ||||
| using Volo.Abp.BackgroundWorkers; | ||||
| 
 | ||||
| public class MyModule : AbpModule | ||||
| { | ||||
|     public override void OnApplicationInitialization(ApplicationInitializationContext context) | ||||
|         { | ||||
|             context.ServiceProvider | ||||
|                 .GetRequiredService<IBackgroundWorkerManager>() | ||||
|                 .Add( | ||||
|                     context.ServiceProvider.GetRequiredService<AppStatusCheckingWorker>() | ||||
|                 ); | ||||
|         } | ||||
| } | ||||
| ```` | ||||
					Loading…
					
					
				
		Reference in new issue
	
	 Ahmet Çotur
						Ahmet Çotur