Service.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using Shaker.Model;
  2. using Shaker.Models;
  3. using Shaker.Tools;
  4. using ShakerService.Tools;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Diagnostics.CodeAnalysis;
  8. using System.Linq;
  9. using System.Net;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. namespace ShakerService
  13. {
  14. internal partial class Service
  15. {
  16. [AllowNull]
  17. private IDeviceDiscovery.IDeviceDiscovery deviceDiscovery;
  18. [AllowNull]
  19. private IOilSourceService.IOilSourceService oilSourceService;
  20. private AutoResetEvent WaitTriggerLock = new AutoResetEvent(false);
  21. /// <summary>
  22. /// 程序主循环,用以退出主程序
  23. /// </summary>
  24. private CancellationTokenSource maintokenSource = new CancellationTokenSource();
  25. public void Start()
  26. {
  27. string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Plugins");
  28. deviceDiscovery = IModel.Tools.PluginsLoader.Defalut.Load<IDeviceDiscovery.IDeviceDiscovery>(path)?.FirstOrDefault();
  29. if(deviceDiscovery!=null)
  30. {
  31. deviceDiscovery.Init(Shaker.Model.Topic.DISCOVERYPORT,Topic.MulticastGroup);
  32. deviceDiscovery.OnDeviceFound = (args) =>
  33. {
  34. return new ResultDeviceModel()
  35. {
  36. Success = true,
  37. DeviceInfoModel = new DeviceInfoModel()
  38. {
  39. DeviceName = ViewModel.ServiceConfigViewModel.Instance.Name,
  40. SN = ViewModel.ServiceConfigViewModel.Instance.SN,
  41. }
  42. };
  43. };
  44. deviceDiscovery.Start();
  45. }
  46. oilSourceService = IModel.Tools.PluginsLoader.Defalut.Load<IOilSourceService.IOilSourceService>(path)?.FirstOrDefault();
  47. if (oilSourceService != null)
  48. {
  49. oilSourceService.Init(Communication.Instance.Context, Communication.Instance.DbConnection);
  50. oilSourceService.Start();
  51. }
  52. }
  53. public void Stop()
  54. {
  55. oilSourceService?.Stop();
  56. deviceDiscovery?.Stop();
  57. }
  58. private void MainTask()
  59. {
  60. while(!maintokenSource.IsCancellationRequested)
  61. {
  62. RTInit();
  63. }
  64. }
  65. private void RTInit()
  66. {
  67. }
  68. }
  69. }