「.NET Core Console」の版間の差分
ナビゲーションに移動
検索に移動
(→実装) |
|||
138行目: | 138行目: | ||
} | } | ||
} | } | ||
+ | } | ||
+ | </pre> | ||
+ | |||
+ | ===Hostedアプリケーションの停止をプログラムから=== | ||
+ | <pre> | ||
+ | IHostApplicationLifetime _lifeTime; | ||
+ | public MyClass(IHostApplicationLifetime lifeTime) | ||
+ | { | ||
+ | _lifeTime = lifeTime; | ||
+ | } | ||
+ | </pre> | ||
+ | *停止 | ||
+ | <pre> | ||
+ | public void Exit() | ||
+ | { | ||
+ | _lifeTime.StopApplication(); | ||
} | } | ||
</pre> | </pre> |
2021年7月4日 (日) 06:31時点における版
| .NET Core | ASP.NET Core | C Sharp |
目次
.NET Core Console/Worker
汎用HOST
プロジェクト作成
$ dotnet new worker -o docweb_bat2 $ dotnet new gitignore
NuGet
Configuration
dotnet add package Microsoft.Extensions.Configuration.Json --version 5.0.0 dotnet add package Microsoft.Extensions.Configuration.CommandLine --version 5.0.0
Logging
- Log4net
dotnet add package Microsoft.Extensions.Logging.Log4Net.AspNetCore --version 5.0.3
DI
dotnet add package Microsoft.Extensions.DependencyInjection --version 5.0.1 dotnet add package Microsoft.Extensions.Options --version 5.0.0 dotnet add package Microsoft.Extensions.Configuration.Binder --version 5.0.0
実装
- Progmram.cs
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using docweb_bat2.Models; using docweb_bat2.Services; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace docweb_bat2 { public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((hostContext, builder) => { builder.ClearProviders(); builder.AddLog4Net(); }) .ConfigureServices((hostContext, services) => { // requires using Microsoft.Extensions.Options services.Configure<DocumentWebDatabaseSettings>( hostContext.Configuration.GetSection(nameof(DocumentWebDatabaseSettings))); services.AddSingleton<IDocumentWebDatabaseSettings>(sp => sp.GetRequiredService<IOptions<DocumentWebDatabaseSettings>>().Value); services.AddSingleton<IConfiguration>(hostContext.Configuration); services.AddSingleton<DocumentWebService>(); services.AddHostedService<Worker>(); }) ; } }
- 設定ロード先
namespace docWeb.Models { public interface IDocumentWebDatabaseSettings { string DocumentWebCollectionName { get; set; } string ConnectionString { get; set; } string DatabaseName { get; set; } } public class DocumentWebDatabaseSettings : IDocumentWebDatabaseSettings { public string DocumentWebCollectionName { get; set; } public string ConnectionString { get; set; } public string DatabaseName { get; set; } } }
*ワーカー
using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Text; using System.Threading; using System.Threading.Tasks; using docweb_bat2.Services; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using MongoDB.Bson; using MongoDB.Driver; using Newtonsoft.Json; namespace docweb_bat2 { public class Worker : BackgroundService { private readonly ILogger<Worker> _logger; private IConfiguration _config; private DocumentWebService _service; static readonly HttpClient client = new HttpClient(); public Worker(ILogger<Worker> logger, IConfiguration config, DocumentWebService service) { _logger = logger; _config = config; _service = service; } protected override async Task ExecuteAsync(CancellationToken stoppingToken) { : } } } }
Hostedアプリケーションの停止をプログラムから
IHostApplicationLifetime _lifeTime; public MyClass(IHostApplicationLifetime lifeTime) { _lifeTime = lifeTime; }
- 停止
public void Exit() { _lifeTime.StopApplication(); }
© 2006 矢木浩人