mirror of
https://gitee.com/langsisi_admin/serein-flow
synced 2026-03-15 05:56:34 +08:00
1. 修改了Serein.Library中的ObjectPool工具类,提供了对象归还的默认处理方法(通过构造方法指定Action<T>委托)
2. 不再显式调用流程上下文的Reset()方法,而改为通过对象池调用 3. 同样的,对于同样使用了ObjectPool管理上下文的Serein.Proto.WebSocket项目而言,也进行了同2.一样的修改
This commit is contained in:
@@ -40,14 +40,14 @@ namespace Serein.NodeFlow.Env
|
||||
this.flowModelService = flowModelService;
|
||||
this.UIContextOperation = UIContextOperation;
|
||||
|
||||
contexts = new ObjectPool<IFlowContext>(() => new FlowContext(flowEnvironment));
|
||||
contexts = new ObjectPool<IFlowContext>(() => new FlowContext(flowEnvironment), context => context.Reset());
|
||||
flowTaskOptions = new FlowWorkOptions
|
||||
{
|
||||
FlowIOC = IOC,
|
||||
Environment = flowEnvironment, // 流程
|
||||
FlowContextPool = contexts, // 上下文对象池
|
||||
};
|
||||
flowTaskManagementPool = new ObjectPool<FlowWorkManagement>(()=> new FlowWorkManagement(flowTaskOptions));
|
||||
flowTaskManagementPool = new ObjectPool<FlowWorkManagement>(()=> new FlowWorkManagement(flowTaskOptions), fwm => fwm.Exit());
|
||||
}
|
||||
|
||||
private ObjectPool<IFlowContext> contexts;
|
||||
@@ -102,7 +102,6 @@ namespace Serein.NodeFlow.Env
|
||||
{
|
||||
flowWorkManagements.Remove(fwm);
|
||||
}
|
||||
fwm.Exit();
|
||||
flowTaskManagementPool.Free(fwm);
|
||||
}
|
||||
|
||||
@@ -257,7 +256,6 @@ namespace Serein.NodeFlow.Env
|
||||
}
|
||||
});
|
||||
}
|
||||
context.Reset();
|
||||
flowContextPool.Free(context);
|
||||
ReturnFWM(flowWorkManagement); // 释放流程任务管理器
|
||||
if (flowResult.Value is TResult result)
|
||||
@@ -330,7 +328,6 @@ namespace Serein.NodeFlow.Env
|
||||
}
|
||||
});
|
||||
}
|
||||
context.Reset();
|
||||
flowContextPool.Free(context);
|
||||
ReturnFWM(flowWorkManagement); // 释放流程任务管理器
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user