public static async Task <T> PerformFunctionAsync <T>( this IExtensionManager extensionManager, object extension, Func <Task <T> > function, T defaultValue) { try { if (!extensionManager.IsDisabled(extension)) { var task = function() ?? SpecializedTasks.Default <T>(); return(await task.ConfigureAwait(false)); } } catch (OperationCanceledException) { throw; } catch (Exception e) when(extensionManager.CanHandleException(extension, e)) { extensionManager.HandleException(extension, e); } return(defaultValue); }
public static async Task <T> PerformFunctionAsync <T>( this IExtensionManager extensionManager, object extension, Func <Task <T>?> function, T defaultValue) { if (extensionManager.IsDisabled(extension)) { return(defaultValue); } try { var task = function(); if (task != null) { return(await task.ConfigureAwait(false)); } } catch (Exception e) when(!(e is OperationCanceledException) && extensionManager.CanHandleException(extension, e)) { extensionManager.HandleException(extension, e); } return(defaultValue); }
public static T PerformFunction <T>( this IExtensionManager extensionManager, object extension, Func <T> function, T defaultValue ) { try { if (!extensionManager.IsDisabled(extension)) { return(function()); } } catch (OperationCanceledException) { throw; } catch (Exception e) when(extensionManager.CanHandleException(extension, e)) { extensionManager.HandleException(extension, e); } return(defaultValue); }
public static void PerformAction(this IExtensionManager extensionManager, object extension, Action action) { try { if (!extensionManager.IsDisabled(extension)) { action(); } } catch (OperationCanceledException) { throw; } catch (Exception e) when(extensionManager.CanHandleException(extension, e)) { extensionManager.HandleException(extension, e); } }
public static async Task PerformActionAsync( this IExtensionManager extensionManager, object extension, Func <Task> function) { try { if (!extensionManager.IsDisabled(extension)) { var task = function() ?? SpecializedTasks.EmptyTask; await task.ConfigureAwait(false); } } catch (OperationCanceledException) { throw; } catch (Exception e) when(extensionManager.CanHandleException(extension, e)) { extensionManager.HandleException(extension, e); } }