/// <summary> /// 等待挂起的异步读取完成 /// </summary> /// <param name="asyncResult">对所等待挂起的异步请求的引用</param> /// <returns></returns> public short[] EndRead(IAsyncResult asyncResult) { if (asyncResult == null) { throw new ArgumentNullException("asyncResult"); } WaitHandle handle = asyncResult.AsyncWaitHandle; if (handle != null) { try { handle.WaitOne(); } finally { handle.Close(); } } AsyncLoadDataEventHandler read = asyncResult.AsyncState as AsyncLoadDataEventHandler; short[] data = read.EndInvoke(asyncResult); if (data == null) { throw new TimeoutException("获取数据超时"); } return(data); }
/// <summary> /// 异步方式获取记录仪数据 /// </summary> /// <param name="id"></param> /// <param name="callBack">回调函数</param> /// <param name="stateObject">异步状态信息</param> /// <param name="timeOut">超时 默认30秒</param> /// <returns></returns> public IAsyncResult BeginRead(short id, AsyncCallback callBack, int timeOut = 30) { try { AsyncLoadDataEventHandler read = new AsyncLoadDataEventHandler(Read); return(read.BeginInvoke(id, timeOut, callBack, read)); } catch (Exception e) { // Hide inside method invoking stack throw e; } }