public TResult Invoke <TResult>(AspectActivatorContext activatorContext) { var context = _aspectContextFactory.CreateContext(activatorContext); try { var aspectBuilder = _aspectBuilderFactory.Create(context); var task = aspectBuilder.Build()(context); if (task.IsFaulted) { throw _aspectExceptionWrapper.Wrap(context, task.Exception.InnerException); } if (!task.IsCompleted) { // try to avoid potential deadlocks. NoSyncContextScope.Run(task); // task.GetAwaiter().GetResult(); } return((TResult)context.ReturnValue); } catch (Exception ex) { throw _aspectExceptionWrapper.Wrap(context, ex); } finally { _aspectContextFactory.ReleaseContext(context); } }
public TResult Invoke <TResult>(AspectActivatorContext activatorContext) { var context = aspectContextFactory.CreateContext(activatorContext); try { var aspectBuilder = aspectBuilderFactory.Create(context); var task = aspectBuilder.Build()(context); if (task.IsFaulted) { throw task.Exception.InnerException; } if (!task.IsCompleted) { // try to avoid potential deadlocks. NoSyncContextScope.Run(task); } return((TResult)context.ReturnValue); } finally { aspectContextFactory.ReleaseContext(context); } }
public TResult Invoke <TResult>(InterceptorDelegate interceptor, InvocationContext context) { Task task = null; if (_collections.TryGetValue(context.Method, out InterceptorMiddleware middleware)) { task = middleware(interceptor)(context); } else { task = interceptor(context); } if (task.IsFaulted) { throw task.Exception.InnerException; } if (!task.IsCompleted) { NoSyncContextScope.Run(task); } return((TResult)context.Return); }
public static T RunWithoutSyncContext <T>(this ValueTask <T> task) { return(NoSyncContextScope.Run(task)); }
public static void RunWithoutSyncContext(this ValueTask task) { NoSyncContextScope.Run(task); }