using System; using System.Collections.Generic; using System.Linq; using System.Reflection.PortableExecutable; using System.Text; using System.Threading.Tasks; using System.IO; using Autofac; using Hangfire; using Hangfire.SqlServer; using PluginSystem; using JobSystem; namespace WpfApp4 { public class Startup { private const string PluginDirectory = "Plugins"; private const string ConnectionString = "Server=127.0.0.1;Database=HANGFIRE;User ID=sa;Password=1;"; public IContainer ConfigureContainer() { var builder = new ContainerBuilder(); // 配置Hangfire存储 builder.Register(c => new SqlServerStorage(ConnectionString)) .As() .SingleInstance(); // 注册Hangfire服务 builder.RegisterType() .AsSelf() .SingleInstance(); builder.RegisterType() .As() .SingleInstance(); // 注册插件加载器 builder.RegisterType() .WithParameter("pluginDirectory", Path.Combine(Directory.GetCurrentDirectory(), PluginDirectory)) .AsSelf() .SingleInstance(); // 注册动态任务管理器 builder.RegisterType() .AsSelf() .SingleInstance(); // 加载并注册插件 var pluginLoader = new PluginLoader(Path.Combine(Directory.GetCurrentDirectory(), PluginDirectory)); pluginLoader.LoadPlugins(builder); return builder.Build(); } public void StartHangfireServer(IContainer container) { // 启动Hangfire服务器 var server = container.Resolve(); server.Start(); // 注册所有插件任务 var jobManager = container.Resolve(); jobManager.RegisterAllPluginJobs(); } } }