SleepToolPlugin.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System.Collections.Generic;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. using TeamAAS.FlowEditor.Models;
  5. using TeamAAS.FlowEditor.Plugins;
  6. using Plugins.Standard.Models;
  7. namespace Plugins.Standard
  8. {
  9. /// <summary>
  10. /// 休眠工具插件 - 无自定义视图,双击弹出PropertyGrid编辑器
  11. /// </summary>
  12. [PluginAttribute("休眠", PluginCategory.其他, typeof(SleepKitModel),
  13. "ClockOutline",
  14. Description="休眠工具,用于在流程中添加延迟")]
  15. [System.Serializable]
  16. public class SleepToolPlugin : BasePlugin<SleepKitModel>
  17. {
  18. public override List<OutputField> DeclareOutputs() => new List<OutputField>
  19. {
  20. new OutputField("休眠时间(ms)", typeof(int)),
  21. };
  22. public override NodeRunStatus PluginRun(CancellationToken token, out Dictionary<string, object> results)
  23. {
  24. results = new Dictionary<string, object>();
  25. try
  26. {
  27. int waitTime = GetValue<int>(Model.WaitTime);
  28. Log(4, $"开始休眠 {waitTime}ms");
  29. Task.Delay(waitTime, token).Wait(token);
  30. results["休眠时间(ms)"] = waitTime;
  31. Log(2, $"休眠完成,耗时 {waitTime}ms");
  32. return NodeRunStatus.Success;
  33. }
  34. catch (System.OperationCanceledException)
  35. {
  36. results["异常"] = "休眠被取消";
  37. Log(1, "休眠被取消", TeamAAS.LogLevel.Warning);
  38. return NodeRunStatus.Failed;
  39. }
  40. catch (System.Exception ex)
  41. {
  42. results["异常"] = ex.Message;
  43. Log(1, $"休眠异常: {ex.Message}", TeamAAS.LogLevel.Error);
  44. return NodeRunStatus.Failed;
  45. }
  46. }
  47. }
  48. }