You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.2 KiB
71 lines
2.2 KiB
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<JobStorage>()
|
|
.SingleInstance();
|
|
|
|
// 注册Hangfire服务
|
|
builder.RegisterType<BackgroundJobServer>()
|
|
.AsSelf()
|
|
.SingleInstance();
|
|
|
|
builder.RegisterType<RecurringJobManager>()
|
|
.As<IRecurringJobManager>()
|
|
.SingleInstance();
|
|
|
|
// 注册插件加载器
|
|
builder.RegisterType<PluginLoader>()
|
|
.WithParameter("pluginDirectory", Path.Combine(Directory.GetCurrentDirectory(), PluginDirectory))
|
|
.AsSelf()
|
|
.SingleInstance();
|
|
|
|
// 注册动态任务管理器
|
|
builder.RegisterType<DynamicJobManager>()
|
|
.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<BackgroundJobServer>();
|
|
server.Start();
|
|
|
|
// 注册所有插件任务
|
|
var jobManager = container.Resolve<DynamicJobManager>();
|
|
jobManager.RegisterAllPluginJobs();
|
|
}
|
|
}
|
|
|
|
}
|
|
|