예제 #1
0
 private void Invoke(DelegateCall a)
 {
     if (!IsDisposed)
     {
         InvokeManager.Instance.AddInvoke(a);
     }
 }
예제 #2
0
 public void Invoke(DelegateCall delegateCall)
 {
     if (IsCanInvoke)
     {
         InvokeManager.Instance.AddInvoke(delegateCall);
     }
 }
예제 #3
0
        public void UpdateProgressBar(int persent, bool total)
        {
            var d = new DelegateCall(this, new MainForm.UpdateProgressBarDelegate(updateProgressBarUnsafe), persent,
                                     total);

            Invoke(d);
        }
예제 #4
0
        public void Push(Delegate @delegate, params object[] parameter)
        {
            if (@delegate == null)
            {
                return;
            }
            var call = new DelegateCall(@delegate, parameter);

            //TaskDebug.Verbose($"EventLoop Queue {call}");
            _queue.Enqueue(call);
        }
예제 #5
0
            public DelegateReply(DelegateCall call)
            {
                Id = call.Id;
                LocalDelegateId  = call.LocalDelegateId;
                RemoteDelegateId = call.RemoteDelegateId;
                Data             = RPCData.Create(call.Data, RPCDataType.DelegateReply);

                Data.Serializer.WriteI32(Id);
                Data.Serializer.WriteI32(LocalDelegateId);
                Data.Serializer.WriteI32(RemoteDelegateId);
            }
예제 #6
0
            internal static DelegateCall Create(RPCData data)
            {
                var call = new DelegateCall();

                call.Data = data;

                call.Id = data.Serializer.ReadI32();
                call.RemoteDelegateId = data.Serializer.ReadI32();
                call.LocalDelegateId  = data.Serializer.ReadI32();

                return(call);
            }
예제 #7
0
        private void Loop()
        {
            DelegateCall action = null;

            while (_queue.Dequeue(ref action))
            {
                //TaskDebug.Verbose($"EventLoop Dequeue {action}");
                _busyEvent.Reset();
                try
                {
                    action.Delegate.DynamicInvoke(action.Parameter);
                }
                catch (Exception e)
                {
                    OnUnhandledException(e);
                }
                _busyEvent.Set();
            }
        }
예제 #8
0
 DelegateCall IDelegateHandler.Add(DelegateCall delegateCall)
 {
     _delegateCalls += delegateCall;
     return(delegateCall);
 }
예제 #9
0
 void IDelegateHandler.RemoveAll()
 {
     _delegateCalls = null;
 }
예제 #10
0
 void IDelegateHandler.Remove(DelegateCall delegateCall)
 {
     _delegateCalls -= delegateCall;
 }
예제 #11
0
 public Invokes()
 {
     this.CallBacks = this.DefaultCall;
 }
예제 #12
0
        public void SetVersionType(String va, VersionType a)
        {
            var d = new DelegateCall(this, new MainForm.SetVersionTypeDelegate(SetVersionTypeU), va, a);

            Invoke(d);
        }
예제 #13
0
파일: RPCData.cs 프로젝트: chartly/flood
            public DelegateReply(DelegateCall call)
            {
                Id = call.Id;

                Data = new RPCData(call.Data, RPCDataType.DelegateReply);

                Data.Serializer.WriteI32(Id);
            }
예제 #14
0
파일: RPCData.cs 프로젝트: chartly/flood
            internal static DelegateCall Create(RPCData data)
            {
                var call = new DelegateCall();
                call.Data = data;

                call.Id = data.Serializer.ReadI32();

                return call;
            }
예제 #15
0
            public DelegateReply(DelegateCall call)
            {
                Id = call.Id;

                Data = new Message(call.Data, MessageType.DelegateReply);

                Data.Serializer.WriteI32(Id);
            }