internal static ReturnInfo Execute(Action <Action> invokeCore, VarPool varManager, TypeFinder typeFinder, ProtocolInfo info) { IAsyncInvoke invoke = new AsyncExecute(invokeCore); if (info.ProtocolType == ProtocolType.Operation) { invoke = new SyncExecute(invokeCore); var executeCheck = varManager.Add(false); var args = new List <object>(info.Arguments); args.Insert(0, executeCheck); info = new ProtocolInfo(info.ProtocolType, info.OperationTypeInfo, info.VarAddress, info.TypeFullName, info.Operation, args.ToArray()); try { return(Execute(invoke, varManager, typeFinder, info)); } finally { varManager.Remove(executeCheck); } } else { return(Execute(invoke, varManager, typeFinder, info)); } }
static ReturnInfo BinOff(VarPool varManager, ProtocolInfo info) { varManager.Remove(info.VarAddress); return(new ReturnInfo()); }