public static void EndPagdingTable(IAsyncResult result) { ReconstructTable item = result.AsyncState as ReconstructTable; int rowCount = 0; try { item.Result = item.Method.EndInvoke(out rowCount, result); item.rowCount = rowCount; } catch (Exception ex) { item.Exception = ex; } finally { item.Event.Set(); } }
public static DataTable BeginPagingTable(this DbOperator dbOperator, string sql, int pageIndex, int pageSize, out int rowCount) { if (string.IsNullOrEmpty(sql)) { throw new ArgumentNullException("sql"); } t_Paging paging = new t_Paging(PagingTables); ReconstructTable item = new ReconstructTable() { Event = new ManualResetEvent(false), Method = paging }; IAsyncResult result = paging.BeginInvoke(dbOperator, sql, pageIndex, pageSize, out rowCount, new AsyncCallback(EndPagdingTable), item); item.Event.WaitOne(); if (item.Exception != null) { throw item.Exception; } rowCount = item.rowCount; return((DataTable)item.Result); }