public Task <OperateResult <byte[]> > ReadAsync(string address, ushort length) { var tcs = new TaskCompletionSource <OperateResult <byte[]> >(); m_plc.BeginRead(address, length, read => { tcs.SetResult(read); }); return(tcs.Task); }