diff --git a/src/c#/GeneralUpdate.SystemService/Jobs/WillMessageJob.cs b/src/c#/GeneralUpdate.SystemService/Jobs/WillMessageJob.cs
deleted file mode 100644
index 9adb6efc0d4bed4acc9ca81b30820430bb8d67c9..0000000000000000000000000000000000000000
--- a/src/c#/GeneralUpdate.SystemService/Jobs/WillMessageJob.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using Quartz;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace GeneralUpdate.SystemService.Jobs
-{
- internal class WillMessageJob : IJob
- {
- internal const string GROUP = "WillMessageGroup";
- internal const string TRIGGER = "WillMessageTrigger";
- private readonly ISchedulerFactory _schedulerFactory;
- private IJobExecutionContext _jobExecutionContext;
-
- public WillMessageJob(ISchedulerFactory schedulerFactory)
- {
- _schedulerFactory = schedulerFactory;
- }
-
- public Task Execute(IJobExecutionContext context)
- {
- _jobExecutionContext = context;
- return ScanWillMessage();
- }
-
- private async Task ScanWillMessage()
- {
- // 暂停任务
- var scheduler = await _schedulerFactory.GetScheduler();
- await scheduler.PauseJob(_jobExecutionContext.JobDetail.Key);
- }
- }
-}
diff --git a/src/c#/GeneralUpdate.SystemService/PersistenceObjects/ProcessPersistence.cs b/src/c#/GeneralUpdate.SystemService/PersistenceObjects/ProcessPersistence.cs
index 3f4dfc5c9100e400f6a1027dc873fcaf4c177474..bb4dd8da591526c8d32ec1e8fec4dc5b6a82a83f 100644
--- a/src/c#/GeneralUpdate.SystemService/PersistenceObjects/ProcessPersistence.cs
+++ b/src/c#/GeneralUpdate.SystemService/PersistenceObjects/ProcessPersistence.cs
@@ -1,31 +1,11 @@
namespace GeneralUpdate.SystemService.PersistenceObjects
{
- internal enum ProcessStatus
- {
- ///
- /// Processing has not yet begun.
- ///
- NotStarted,
- ///
- /// Processing completed.
- ///
- Completed,
- ///
- /// Processing failure.
- ///
- Failed
- }
-
internal class ProcessPersistence
{
- public required string Name { get; set; }
-
- public required string Path { get; set; }
-
- public required string BackupPath { get; set; }
+ public string Name { get; set; }
- public ProcessStatus Status { get; set; }
+ public string Path { get; set; }
- public DateTime CreateTime { get; set; }
+ public string BackupPath { get; set; }
}
}
diff --git a/src/c#/GeneralUpdate.SystemService/PersistenceObjects/WillMessagePersistence.cs b/src/c#/GeneralUpdate.SystemService/PersistenceObjects/WillMessagePersistence.cs
index 6e9f78d043286fa13b42b2d8206efcfd58ab8298..975f65ea4ee86b9a63872d7bad2c8096a1bf18da 100644
--- a/src/c#/GeneralUpdate.SystemService/PersistenceObjects/WillMessagePersistence.cs
+++ b/src/c#/GeneralUpdate.SystemService/PersistenceObjects/WillMessagePersistence.cs
@@ -1,7 +1,27 @@
namespace GeneralUpdate.SystemService.PersistenceObjects
{
+ internal enum ProcessStatus
+ {
+ ///
+ /// Processing has not yet begun.
+ ///
+ NotStarted,
+ ///
+ /// Processing completed.
+ ///
+ Completed,
+ ///
+ /// Processing failure.
+ ///
+ Failed
+ }
+
internal class WillMessagePersistence where T : class
{
- public required List Messages { get; set; }
+ public List Messages { get; set; }
+
+ public DateTime CreateTime { get; set; }
+
+ public ProcessStatus Status { get; set; }
}
}
diff --git a/src/c#/GeneralUpdate.SystemService/Program.cs b/src/c#/GeneralUpdate.SystemService/Program.cs
index c4eee17d84428a0651dcb013174975df84954f3b..2b1b77e3bad474ba6d10d69fdef7c3a4c0937288 100644
--- a/src/c#/GeneralUpdate.SystemService/Program.cs
+++ b/src/c#/GeneralUpdate.SystemService/Program.cs
@@ -7,7 +7,7 @@ namespace GeneralUpdate.SystemService
public static void Main(string[] args)
{
var builder = Host.CreateApplicationBuilder(args);
- builder.Services.AddHostedService();
+ builder.Services.AddHostedService();
var host = builder.Build();
host.Run();
}
diff --git a/src/c#/GeneralUpdate.SystemService/Services/QuartzService.cs b/src/c#/GeneralUpdate.SystemService/Services/QuartzService.cs
deleted file mode 100644
index dc693be1ddc0113503c4da3079ea1df7d0306eb5..0000000000000000000000000000000000000000
--- a/src/c#/GeneralUpdate.SystemService/Services/QuartzService.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using GeneralUpdate.SystemService.Jobs;
-using Quartz;
-using Quartz.Impl;
-
-namespace GeneralUpdate.SystemService.Services
-{
- internal class QuartzService : BackgroundService
- {
- private readonly ILogger _logger;
- private IJobDetail _job;
- private ITrigger _trigger;
- private IScheduler _scheduler;
-
- public QuartzService(ILogger logger)
- {
- _logger = logger;
- }
-
- protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- {
- _scheduler = await new StdSchedulerFactory().GetScheduler();
- await _scheduler.Start();
-
- var runTime = DateBuilder.EvenMinuteDate(DateTimeOffset.UtcNow);
-
- _job = JobBuilder.Create()
- .WithIdentity(nameof(WillMessageJob), WillMessageJob.GROUP)
- .Build();
- _trigger = TriggerBuilder.Create()
- .WithIdentity(WillMessageJob.TRIGGER, WillMessageJob.GROUP)
- .StartAt(runTime)
- .WithSimpleSchedule(x => x
- .WithIntervalInMinutes(2)
- .RepeatForever())
- .Build();
-
- await _scheduler.ScheduleJob(_job, _trigger);
- }
-
- public override async Task StopAsync(CancellationToken cancellationToken)
- {
- await base.StopAsync(cancellationToken);
- await _scheduler?.Shutdown();
- }
- }
-}
diff --git a/src/c#/GeneralUpdate.SystemService/Services/WillMessageService.cs b/src/c#/GeneralUpdate.SystemService/Services/WillMessageService.cs
new file mode 100644
index 0000000000000000000000000000000000000000..d4408e95e8a4a94a7f630e19ca6f86d3b9ed9dea
--- /dev/null
+++ b/src/c#/GeneralUpdate.SystemService/Services/WillMessageService.cs
@@ -0,0 +1,45 @@
+using GeneralUpdate.SystemService.PersistenceObjects;
+
+namespace GeneralUpdate.SystemService.Services
+{
+ internal class WillMessageService : BackgroundService
+ {
+ private readonly string? _path;
+ private FileSystemWatcher _fileWatcher;
+
+ public WillMessageService(IConfiguration configuration) => _path = configuration.GetValue("WatcherPath");
+
+ protected override Task ExecuteAsync(CancellationToken stoppingToken)
+ {
+ stoppingToken.Register(() => OnStopping());
+ _fileWatcher = new FileSystemWatcher(_path);
+ // Watch for changes in LastAccess and LastWrite times, and the renaming of files or directories.
+ _fileWatcher.NotifyFilter = NotifyFilters.LastWrite;
+ // Only watch text files.
+ _fileWatcher.Filter = "*.*";
+ _fileWatcher.Changed += OnChanged;
+ _fileWatcher.EnableRaisingEvents = true;
+ return Task.CompletedTask;
+ }
+
+ private void OnChanged(object sender, FileSystemEventArgs e)
+ {
+ var willMessage = new WillMessagePersistence();
+ switch (willMessage.Status)
+ {
+ case ProcessStatus.NotStarted:
+ break;
+ case ProcessStatus.Failed:
+ break;
+ case ProcessStatus.Completed:
+ break;
+ }
+ }
+
+ private void OnStopping()
+ {
+ _fileWatcher.EnableRaisingEvents = false;
+ _fileWatcher.Dispose();
+ }
+ }
+}
diff --git a/src/c#/GeneralUpdate.SystemService/appsettings.json b/src/c#/GeneralUpdate.SystemService/appsettings.json
index b2dcdb67421cdf46236defda1c6fbf1d9eead5ee..1ac231fab880fe7f8109ba14d53b609731d81aba 100644
--- a/src/c#/GeneralUpdate.SystemService/appsettings.json
+++ b/src/c#/GeneralUpdate.SystemService/appsettings.json
@@ -4,5 +4,6 @@
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
- }
+ },
+ "WatcherPath": "C:\\generalupdate_willmessage"
}