示例#1
0
        public async Task <TResult> InvokeAsync <TResult>(Func <TResult> callback)
        {
            var invokeFunc = new InvokeFunc(() => callback.Invoke());

            _funcQ.Post(invokeFunc);
            var(exceptionDispatchInfo, result) = await invokeFunc.InvokedFlag.ReceiveAsync();

            exceptionDispatchInfo?.Throw();
            return((TResult)result !);
        }
示例#2
0
        public void Invoke(Action action)
        {
            var invokeFunc = new InvokeFunc(() =>
            {
                action.Invoke();
                return(null);
            });

            _funcQ.Post(invokeFunc);
            (ExceptionDispatchInfo exceptionDispatchInfo, _) = invokeFunc.InvokedFlag.Receive();
            exceptionDispatchInfo?.Throw();
        }
示例#3
0
        public async Task InvokeAsync(Action action)
        {
            var invokeFunc = new InvokeFunc(() =>
            {
                action.Invoke();
                return(null);
            });

            _funcQ.Post(invokeFunc);
            var(exceptionDispatchInfo, _) = await invokeFunc.InvokedFlag.ReceiveAsync();

            exceptionDispatchInfo?.Throw();
        }
示例#4
0
 public Task InvokeAsync(string methodName, params object[] args)
 {
     return(InvokeFunc.Invoke(methodName, args));
 }