using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using Hangfire; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Hangfire.Common; using Hangfire.SqlServer; using System.Configuration; using Microsoft.Extensions.Logging; using static WpfApp4.App; using Hangfire.Server; using Microsoft.EntityFrameworkCore; using TaskManager.Controllers; using Microsoft.VisualBasic; namespace WpfApp4 { public class WebStartup { public IConfiguration Configuration { get; } public WebStartup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddDbContext(options => options.UseSqlServer("Server=127.0.0.1;Database=HANGFIRE;User ID=sa;Password=1;TrustServerCertificate=True")); // 添加 Hangfire 服务 services.AddHangfire(configuration => configuration .UseSqlServerStorage( "Server=127.0.0.1;Database=Hangfire;User ID=sa;Password=1;TrustServerCertificate=True") ); // 添加 Hangfire 服务器 services.AddHangfireServer(); services.AddControllersWithViews(); RegisterRecurringJobs(); } private void RegisterRecurringJobs() { RecurringJob.AddOrUpdate( "reader", x => x.ExecuteAsync(), Cron.Minutely //, // JobFilterAttribute.AddFilter(new JobCompletionListener()) ); RecurringJob.AddOrUpdate( "writer", x => x.ExecuteWriterAsync(), Cron.Minutely); } public class MyJob { //private readonly ILogger _logger; // private readonly JobDbContext _dbContext; public MyJob( //ILogger _logger //, JobDbContext dbContext ) { //this._logger = _logger; // _dbContext = dbContext; } public void Execute() { // 这里是你的作业逻辑 Console.WriteLine("定时任务执行中: " + DateTime.Now); // 如果需要访问 UI 元素,需要使用 Dispatcher //Application.Current.Dispatcher.Invoke(() => //{ // // 更新 UI 的代码 //}); } public void ExecuteReaderAsync() { //_logger.LogInformation("开始读取!"); //Application.Current.Dispatcher.Invoke(() => //{ // App.AddLog(new logModel() { Name = "读取", Info = "读取成功!" }); // // 更新 UI 的代码 //}); //string jobId = context.BackgroundJob.Id; } public void ExecuteWriterAsync() { //_logger.LogInformation("开始读取!"); //Application.Current.Dispatcher.Invoke(() => //{ // App.AddLog(new logModel() { Name = "写入", Info = "写入成功!" });// 更新 UI 的代码 //}); ///string jobId = context.BackgroundJob.Id; } } public class logModel { public string Name { get; set; } public string Info { get; set; } } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseHangfireServer(); app.UseHangfireDashboard(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } } }