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; } } }); }
public IAsyncResult BeginFirstSetup(Action <IAsyncResult> callback) { if (_asyncResult != null) { throw new InvalidOperationException(); } _callback = callback; this.CreateAsyncResult(); // _cmdRsp = null; _event.Reset(); // 发送命令。 this.SendCommand(); return(_asyncResult); }