示例#1
0
        public void SendRequest <T>(IPCMessage message, RequestCallbackDelegate <T> callback, RequestCallbackErrorDelegate errorCallback, RequestCallbackDefaultDelegate defaultCallback, int timeout) where T : IPCMessage
        {
            Guid guid = Guid.NewGuid();

            message.RequestGuid = guid;
            IPCRequest <T> request      = null;
            TimerEntry     timeoutTimer = this.RegisterTimer(delegate(int param0)
            {
                this.RequestTimedOut(request);
            }, timeout);

            request = new IPCRequest <T>(message, guid, callback, errorCallback, defaultCallback, timeoutTimer);
            lock (this.m_requests)
            {
                this.m_requests.Add(guid, request);
            }
            this.Send(message);
        }
示例#2
0
        public void SendRequest <T>(IPCMessage message, RequestCallbackDelegate <T> callback, RequestCallbackErrorDelegate errorCallback, RequestCallbackDefaultDelegate defaultCallback,
                                    int timeout) where T : IPCMessage
        {
            var guid = Guid.NewGuid();

            message.RequestGuid = guid;

            IPCRequest <T> request = null;

            if (timeout > 0)
            {
                var timer = RegisterTimer(delegate { RequestTimedOut(request); }, timeout);
                request = new IPCRequest <T>(message, guid, callback, errorCallback, defaultCallback, timer);
            }
            else
            {
                request = new IPCRequest <T>(message, guid, callback, errorCallback, defaultCallback, null);
            }

            lock (m_requests)
                m_requests.Add(guid, request);

            Send(message);
        }