Esempio n. 1
0
        private void SendCommand()
        {
            // 模拟发送数据
            Thread.Sleep(20);

            // 模拟N秒后收到回应。(类似 ReceiveCallBack 函数)
            Task.Factory.StartNew(() =>
            {
                Thread.Sleep(5000);

                if (_asyncResult != null)
                {
                    // 构造命令回应。
                    _cmdRsp = new CmdResponse();

                    // 设置完成标记。
                    _asyncResult.IsCompleted = true;
                    // 激活事件。
                    _event.Set();

                    //
                    if (_callback != null)
                    {
                        _callback.Invoke(_asyncResult);
                        _asyncResult = null;
                    }
                }
            });
        }
Esempio n. 2
0
        public IAsyncResult BeginFirstSetup(Action <IAsyncResult> callback)
        {
            if (_asyncResult != null)
            {
                throw new InvalidOperationException();
            }

            _callback = callback;

            this.CreateAsyncResult();

            //
            _cmdRsp = null;
            _event.Reset();

            // 发送命令。
            this.SendCommand();

            return(_asyncResult);
        }