public void Invoke(string operationName, Action <InvokeResponse> callback, params object[] args)
        {
            IInvokableService      service        = Container.Resolve <IInvokableService>();
            SynchronizationContext currentContext = SynchronizationContext.Current;

            service.BeginInvoke(InvokeRequest.Create <T>(operationName, args),
                                (asyncResult) =>
            {
                InvokeResponse response = service.EndInvoke(asyncResult);
                if (callback != null && response.Error == null)
                {
                    currentContext.Send((obj) => callback(response), null);
                }
                else if (response.Error != null)
                {
                    throw response.Error;
                }
            },
                                null);
        }