Beispiel #1
0
 public CallInBackgroundArguments(object subscriber, object sender, EventArgs eventArgs, IDelegateWrapper delegateWrapper)
 {
     this.Subscriber      = subscriber;
     this.Sender          = sender;
     this.EventArgs       = eventArgs;
     this.DelegateWrapper = delegateWrapper;
 }
Beispiel #2
0
 public CallInBackgroundArguments(object subscriber, object sender, EventArgs eventArgs, IDelegateWrapper delegateWrapper)
 {
     this.Subscriber = subscriber;
     this.Sender = sender;
     this.EventArgs = eventArgs;
     this.DelegateWrapper = delegateWrapper;
 }
Beispiel #3
0
        private Delegate GetWrappedDelegate(Delegate delegateInstance)
        {
            if (delegateInstance != null && delegateInstance.Target is IDelegateWrapper)
            {
                IDelegateWrapper wrapper = delegateInstance.Target as IDelegateWrapper;
                return(GetWrappedDelegate(wrapper.WrappedDeleage));
            }

            return(delegateInstance);
        }
 public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
 {
     if (this.RunningOnUserInterfaceThread())
     {
         this.CallWithoutThreadSwitch(eventTopic, subscriber, delegateWrapper, sender, e);
     }
     else
     {
         this.CallWithThreadSwitch(eventTopic, subscriber, delegateWrapper, sender, e);
     }
 }
 private void CallWithoutThreadSwitch(IEventTopicInfo eventTopic, object subscriber, IDelegateWrapper delegateWrapper, object sender, EventArgs e)
 {
     try
     {
         delegateWrapper.Invoke(subscriber, sender, e);
     }
     catch (TargetInvocationException exception)
     {
         this.HandleSubscriberMethodException(exception, eventTopic);
     }
 }
        public void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
        {
            IEventScopeRegistry registry = this.scopeHolder.Current;

            if (registry != null)
            {
                registry.Register(() => this.handler.Handle(eventTopic, subscriber, sender, e, delegateWrapper));
            }
            else
            {
                this.handler.Handle(eventTopic, subscriber, sender, e, delegateWrapper);
            }
        }
Beispiel #7
0
        public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
        {
            Ensure.ArgumentNotNull(delegateWrapper, "delegateWrapper");

            try
            {
                delegateWrapper.Invoke(subscriber, sender, e);
            }
            catch (TargetInvocationException ex)
            {
                this.HandleSubscriberMethodException(ex, eventTopic);
            }
        }
 public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
 {
     this.syncContextHolder.SyncContext.Post(
         delegate(object data)
             {
                 try
                 {
                     ((IDelegateWrapper)data).Invoke(subscriber, sender, e);
                 }
                 catch (TargetInvocationException exception)
                 {
                     this.HandleSubscriberMethodException(exception, eventTopic);
                 }
             }, 
             delegateWrapper);
 }
Beispiel #9
0
 public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
 {
     ThreadPool.QueueUserWorkItem(
         delegate(object state)
             {
                 try
                 {
                     var args = (CallInBackgroundArguments)state;
                     args.DelegateWrapper.Invoke(args.Subscriber, args.Sender, args.EventArgs);
                 }
                 catch (TargetInvocationException exception)
                 {
                     this.HandleSubscriberMethodException(exception, eventTopic);
                 }
             },
         new CallInBackgroundArguments(subscriber, sender, e, delegateWrapper));
 }
Beispiel #10
0
        public static TReturn RunInAppDomain <TReturn>(IDelegateWrapper <TReturn> func, AppDomain appDomain)
        {
            AppDomain domain = appDomain;

            domain.SetData(name: ToInvoke, data: func);
            domain.DoCallBack(() =>
            {
                var delegateWrapper = AppDomain.CurrentDomain.GetData(ToInvoke) as IDelegateWrapper <TReturn>;
                if (delegateWrapper == null)
                {
                    throw new ArgumentNullException(nameof(func));
                }
                AppDomain.CurrentDomain.SetData(Result, delegateWrapper.Run());
            });

            return((TReturn)domain.GetData(Result));
        }
Beispiel #11
0
        public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
        {
            Ensure.ArgumentNotNull(delegateWrapper, "delegateWrapper");

            try
            {
                delegateWrapper.Invoke(subscriber, sender, e);
            }
            catch (TargetInvocationException ex)
            {
                this.HandleSubscriberMethodException(ex, eventTopic);
            }
        }
Beispiel #12
0
 private void CallWithThreadSwitch(IEventTopicInfo eventTopic, object subscriber, IDelegateWrapper delegateWrapper, object sender, EventArgs e)
 {
     this.syncContextHolder.SyncContext.Send(
         delegate(object data)
     {
         try
         {
             ((IDelegateWrapper)data).Invoke(subscriber, sender, e);
         }
         catch (TargetInvocationException exception)
         {
             this.HandleSubscriberMethodException(exception, eventTopic);
         }
     },
         delegateWrapper);
 }
Beispiel #13
0
 private void CallWithoutThreadSwitch(IEventTopicInfo eventTopic, object subscriber, IDelegateWrapper delegateWrapper, object sender, EventArgs e)
 {
     try
     {
         delegateWrapper.Invoke(subscriber, sender, e);
     }
     catch (TargetInvocationException exception)
     {
         this.HandleSubscriberMethodException(exception, eventTopic);
     }
 }
Beispiel #14
0
 public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
 {
     if (this.RunningOnUserInterfaceThread())
     {
         this.CallWithoutThreadSwitch(eventTopic, subscriber, delegateWrapper, sender, e);
     }
     else
     {
         this.CallWithThreadSwitch(eventTopic, subscriber, delegateWrapper, sender, e);
     }
 }
        public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
        {
            Guard.AgainstNullArgument(nameof(delegateWrapper), delegateWrapper);

            try
            {
                delegateWrapper.Invoke(subscriber, sender, e);
            }
            catch (TargetInvocationException ex)
            {
                this.HandleSubscriberMethodException(ex, eventTopic);
            }
        }
Beispiel #16
0
 public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
 {
     ThreadPool.QueueUserWorkItem(
         delegate(object state)
     {
         try
         {
             var args = (CallInBackgroundArguments)state;
             args.DelegateWrapper.Invoke(args.Subscriber, args.Sender, args.EventArgs);
         }
         catch (TargetInvocationException exception)
         {
             this.HandleSubscriberMethodException(exception, eventTopic);
         }
     },
         new CallInBackgroundArguments(subscriber, sender, e, delegateWrapper));
 }
 private void CallWithThreadSwitch(IEventTopicInfo eventTopic, object subscriber, IDelegateWrapper delegateWrapper, object sender, EventArgs e)
 {
     this.syncContextHolder.SyncContext.Send(
         delegate(object data)
             {
                 try
                 {
                     ((IDelegateWrapper)data).Invoke(subscriber, sender, e);
                 }
                 catch (TargetInvocationException exception)
                 {
                     this.HandleSubscriberMethodException(exception, eventTopic);
                 }
             },
         delegateWrapper);
 }
Beispiel #18
0
 public abstract void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper);
 public abstract void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper);
Beispiel #20
0
 public void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
 {
     this.handler.Handle(eventTopic, subscriber, sender, e, delegateWrapper);
 }
Beispiel #21
0
 public override void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
 {
     this.syncContextHolder.SyncContext.Post(
         delegate(object data)
     {
         try
         {
             ((IDelegateWrapper)data).Invoke(subscriber, sender, e);
         }
         catch (TargetInvocationException exception)
         {
             this.HandleSubscriberMethodException(exception, eventTopic);
         }
     },
         delegateWrapper);
 }
Beispiel #22
0
        public void Handle(IEventTopicInfo eventTopic, object subscriber, object sender, EventArgs e, IDelegateWrapper delegateWrapper)
        {
            IEventScopeRegistry registry = this.scopeHolder.Current;

            if (registry != null)
            {
                registry.Register(() => this.handler.Handle(eventTopic, subscriber, sender, e, delegateWrapper));
            }
            else
            {
                this.handler.Handle(eventTopic, subscriber, sender, e, delegateWrapper);
            }
        }