PluginStartService.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using Ips.Library.Basic;
  9. using Ips.Library.DxpLib;
  10. using Microsoft.Extensions.Hosting;
  11. namespace Ips.Sps.BackgroundServices
  12. {
  13. public class PluginStartService : BackgroundService
  14. {
  15. protected override async Task ExecuteAsync(CancellationToken stoppingToken)
  16. {
  17. await Task.Run(() =>
  18. {
  19. try
  20. {
  21. var str = ToolConfig.GetAppSetting("Plugins");
  22. if (string.IsNullOrWhiteSpace(str)) return;
  23. var arr = str.Split(',', StringSplitOptions.RemoveEmptyEntries);
  24. var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins");
  25. if (!Directory.Exists(dir)) return;
  26. foreach (var item in arr)
  27. {
  28. var file =Directory.GetFiles(dir, item, SearchOption.AllDirectories).FirstOrDefault();
  29. if (file == null) continue;
  30. IpsLogger.Error($"正在启动子程序[{item}]");
  31. Process.Start(file);
  32. }
  33. }
  34. catch (Exception ex)
  35. {
  36. IpsLogger.Error("子程序启动异常!", ex);
  37. }
  38. });
  39. }
  40. }
  41. }