INode.cs 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using SHJX.Service.Control.Common.Assets;
  2. namespace SHJX.Service.Control.Pipeline.Interface
  3. {
  4. public abstract class INode
  5. {
  6. public EquipmentTask CurrentTask { get; set; }
  7. public string Name { get; init; }
  8. public INode NextNode { get; set; }
  9. public INode SetTask(EquipmentTask task)
  10. {
  11. CurrentTask = task;
  12. return this;
  13. }
  14. public INode Record()
  15. {
  16. try
  17. {
  18. DataManagerInstance.Record(CurrentTask, Name);
  19. }
  20. catch
  21. {
  22. }
  23. return this;
  24. }
  25. public virtual void Next()
  26. {
  27. if (Name== "TargetInversion")
  28. {
  29. Thread.Sleep(1000);
  30. }
  31. //if (Name == "TitrationDropperOpen" || Name == "TitrationDropperClose")
  32. //{ Thread.Sleep(3000);
  33. //}
  34. NextNode?.SetTask(CurrentTask)?.Invoke()?.Record()?.Next();
  35. }
  36. public abstract INode Invoke();
  37. }
  38. }