diff --git a/FlowStartTool/FlowEnv.cs b/FlowStartTool/FlowEnv.cs index c8667e2..822006a 100644 --- a/FlowStartTool/FlowEnv.cs +++ b/FlowStartTool/FlowEnv.cs @@ -12,48 +12,22 @@ namespace Serein.FlowStartTool { internal class FlowEnv { - public IFlowEnvironment? Env; + public readonly IFlowEnvironment flowEnvironment = new FlowEnvironment(); public bool IsRuning; public async Task StartFlow(SereinProjectData flowProjectData, string fileDataPath) { IsRuning = true; SynchronizationContext? uiContext = SynchronizationContext.Current; // 在UI线程上获取UI线程上下文信息 var uIContextOperation = new UIContextOperation(uiContext); // 封装一个调用UI线程的工具类 + flowEnvironment.SetUIContextOperation(uIContextOperation); + flowEnvironment.LoadProject(new FlowEnvInfo { Project = flowProjectData }, fileDataPath); // 加载项目 - //if (OperatingSystem.IsLinux()) - //{ - - //} - - // if (uIContextOperation is null) - //{ - // throw new Exception("无法封装 UIContextOperation "); - //} - //else - //{ - // env = new FlowEnvironment(uIContextOperation); - // this.window = window; - //} - - Env = new FlowEnvironment(); - Env.SetUIContextOperation(uIContextOperation); - Env.LoadProject(new FlowEnvInfo { Project = flowProjectData }, fileDataPath); // 加载项目 - - if(Env is IFlowEnvironmentEvent @event) + flowEnvironment.Event.OnEnvOut += (infoType, value) => { - // 获取环境输出 - @event.OnEnvOut += (infoType, value) => - { - Console.WriteLine($"{DateTime.Now} [{infoType}] : {value}{Environment.NewLine}"); - }; - } - - - - await Env.StartRemoteServerAsync(7525); // 启动 web socket 监听远程请求 - - //await Env.StartAsync(); + Console.WriteLine($"{DateTime.Now} [{infoType}] : {value}{Environment.NewLine}"); + }; + await flowEnvironment.StartRemoteServerAsync(7525); // 启动 web socket 监听远程请求 IsRuning = false; } diff --git a/Library/Api/IFlowEnvironment.cs b/Library/Api/IFlowEnvironment.cs index e608640..bff243e 100644 --- a/Library/Api/IFlowEnvironment.cs +++ b/Library/Api/IFlowEnvironment.cs @@ -754,6 +754,12 @@ namespace Serein.Library.Api /// ISereinIOC IOC { get; } + + /// + /// 流程事件接口 + /// + IFlowEnvironmentEvent Event { get; } + /// /// 环境名称 /// diff --git a/NodeFlow/Env/FlowEnvironment.cs b/NodeFlow/Env/FlowEnvironment.cs index d4958e0..6f6bc2b 100644 --- a/NodeFlow/Env/FlowEnvironment.cs +++ b/NodeFlow/Env/FlowEnvironment.cs @@ -80,7 +80,11 @@ namespace Serein.NodeFlow.Env /// public NodeMVVMManagement NodeMVVMManagement => currentFlowEnvironment.NodeMVVMManagement; /// - public ISereinIOC IOC => (ISereinIOC)currentFlowEnvironment; + public ISereinIOC IOC => currentFlowEnvironment.IOC; + + /// + public IFlowEnvironmentEvent Event => currentFlowEnvironment.Event; + /// public string EnvName => currentFlowEnvironment.EnvName; diff --git a/NodeFlow/Env/LocalFlowEnvironment.cs b/NodeFlow/Env/LocalFlowEnvironment.cs index 210c7d7..55e8eed 100644 --- a/NodeFlow/Env/LocalFlowEnvironment.cs +++ b/NodeFlow/Env/LocalFlowEnvironment.cs @@ -224,6 +224,11 @@ namespace Serein.NodeFlow.Env /// public IFlowEnvironment CurrentEnv { get => this; } + /// + /// 流程事件 + /// + public IFlowEnvironmentEvent Event { get => this; } + /// /// UI线程操作类 /// diff --git a/NodeFlow/Env/RemoteFlowEnvironment.cs b/NodeFlow/Env/RemoteFlowEnvironment.cs index c2e9371..5ec9e23 100644 --- a/NodeFlow/Env/RemoteFlowEnvironment.cs +++ b/NodeFlow/Env/RemoteFlowEnvironment.cs @@ -65,6 +65,10 @@ namespace Serein.NodeFlow.Env public ISereinIOC IOC => throw new NotImplementedException(); + /// + /// 流程事件 + /// + public IFlowEnvironmentEvent Event { get => this; } public string EnvName => LocalFlowEnvironment.SpaceName; ///