public override void OnExit(FunctionExecutionArgs args) { var sw = (Stopwatch)args.Tag; sw.Stop(); Debug.WriteLine("{0} executed in {1} milliseconds", args.FunctionName, sw.ElapsedMilliseconds); }
public void OnEntry(FunctionExecutionArgs args) { if (ExcelDnaUtil.IsInFunctionWizard()) { args.ReturnValue = _dialogResult; args.FlowBehavior = FlowBehavior.Return; } // Otherwise we do not interfere }
public override void OnEntry(FunctionExecutionArgs args) { // FunctionExecutionArgs gives access to the function name and parameters, // and gives some options for flow redirection. // Tag will flow through the whole handler args.Tag = args.FunctionName + ":" + Index; Debug.Print("{0} - OnEntry - Args: {1}", args.Tag, string.Join(",", args.Arguments.Select( arg => arg.ToString() ))); }
public override void OnEntry(FunctionExecutionArgs args) { string key = GenerateKey(args); args.Tag = key; object result = _cache[key]; if (result != null) { // Set the return value and FlowBehavior, to short-cut the function call args.ReturnValue = result; args.FlowBehavior = FlowBehavior.Return; } }
public override void OnSuccess(FunctionExecutionArgs args) { Debug.Print("{0} - OnSuccess - Result: {1}", args.Tag, args.ReturnValue); }
public override void OnExit(FunctionExecutionArgs args) { Debug.Print("{0} - OnExit", args.Tag); }
public override void OnException(FunctionExecutionArgs args) { Debug.Print("{0} - OnException - Message: {1}", args.Tag, args.Exception); }
public void OnExit(FunctionExecutionArgs args) { }
public void OnException(FunctionExecutionArgs args) { }
public virtual void OnEntry(FunctionExecutionArgs args) { }
public override void OnSuccess(FunctionExecutionArgs args) { // Store in cache _cache.Add((string)args.Tag, args.ReturnValue, new CacheItemPolicy { AbsoluteExpiration = DateTime.UtcNow + _cacheTimeout }); }
// Implemented just to satisfy the interface public void OnSuccess(FunctionExecutionArgs args) { }
public override void OnEntry(FunctionExecutionArgs args) { args.Tag = Stopwatch.StartNew(); }
string GenerateKey(FunctionExecutionArgs args) { var keyBuilder = new StringBuilder(args.FunctionName); foreach (var arg in args.Arguments) { keyBuilder.Append('\0'); // 0-delimited !? keyBuilder.Append(arg); } return keyBuilder.ToString(); }