示例#1
0
        /// <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);
        }
示例#2
0
 /// <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;
     }
 }